https://github.com/ryo08271154/voice_control
音声操作でスマートデバイスを操作できるPython製アプリケーションです。
https://github.com/ryo08271154/voice_control
chromecast flet mcp mcp-client python raspberry-pi raspberrypi smart-home smarthome switchbot-api voice-assistant voice-control vosk
Last synced: 10 months ago
JSON representation
音声操作でスマートデバイスを操作できるPython製アプリケーションです。
- Host: GitHub
- URL: https://github.com/ryo08271154/voice_control
- Owner: ryo08271154
- License: mit
- Created: 2025-02-23T07:51:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-10T13:07:14.000Z (10 months ago)
- Last Synced: 2025-08-10T14:31:24.379Z (10 months ago)
- Topics: chromecast, flet, mcp, mcp-client, python, raspberry-pi, raspberrypi, smart-home, smarthome, switchbot-api, voice-assistant, voice-control, vosk
- Language: Python
- Homepage:
- Size: 153 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 音声操作アプリケーション
## 概要
音声コマンドを使用してさまざまなデバイスを操作したり、Geminiに質問したりすることができます。
## 特徴
- **デバイス操作**: 照明、テレビ、エアコンなどのスマートデバイスを声で制御できます。
- **メディア制御**: Chromecastのメディアの再生、一時停止、などが可能です。
- **情報検索**: 現在時刻、日付、天気予報などを声で確認できます。
- **AI対話**: Geminiが質問に答えたり、会話をしたりすることができます。また、MCPサーバーを利用することで、外部ツールやサービスとの連携も可能です。
- **カスタマイズ可能**: カスタムデバイス、シーン、ルーチンを定義して、独自の音声コマンドを作成できます。
- **オフライン音声認識**: VOSKまたはWhisperを使用できるため、音声認識はオフラインで動作します。
## インストール手順
1. リポジトリをクローンします。
```bash
git clone https://github.com/ryo08271154/voice_control.git
cd voice_control
```
2. 必要なライブラリをインストールします。
```bash
pip install -r requirements.txt
```
3. 日本語音声認識モデルをダウンロードする。
- **VOSKを使用する場合**:
1. [VOSKモデルページ](https://alphacephei.com/vosk/models)から日本語音声認識モデルをダウンロード
2. ダウンロードしたファイルを解凍
3. 解凍したフォルダを任意の場所に配置
モデルのパスは後でedit_config.pyの設定時に指定します。
- **Whisperを使用する場合**:
1. Whisperのモデルをダウンロードする必要はありません。Whisperは自動的にモデルをダウンロードします。
4. アプリケーションの設定を行います。
```bash
python edit_config.py
```
以下の情報の入力を求められます:
- 使用する音声認識エンジン(VOSKまたはWhisper)
- VOSKモデルのパス(VOSKを使用する場合)
- Whisperのモデル名またはモデルのパス(Whisperを使用する場合)
- Gemini APIキー
- Geminiモデル名
- Geminiシステム指示
- Genius APIトークン (歌詞表示機能を使用する場合は必要)
- [音声読み上げサーバーURL](https://github.com/ryo08271154/voice_control_server)
- 使用するプラグインの選択と設定
設定が完了すると、`config/config.json`が自動的に作成されます。
- **MCPの設定(任意)**:
GeminiでMCPを使用する場合、`config/config.json`に手動で追加する必要があります。
```json
{
"mcpServers": {
}
}
```
5. 必要に応じて、カスタムデバイスやシーンなどを設定できます。
`config`ディレクトリ内の以下のJSONファイルを編集してください:
- **`custom_scenes.json`**: カスタムシーンの設定
```json
{
"sceneList": [
{
"sceneName": "シーン名",
"command": "実行するコマンド"
}
]
}
```
- **`custom_devices.json`**: カスタムデバイスの設定
```json
{
"deviceList": [
{
"deviceName": "デバイス名",
"turnOn": "オンにするコマンド",
"turnOff": "オフにするコマンド"
}
]
}
```
- **`custom_routines.json`**: カスタムルーチンの設定
```json
{
"routineList": [
{
"routineName": "おはよう",
"commands": [
"ライトつけて",
"エアコンつけて",
"今日の天気は"
]
}
]
}
```
## 使用方法
### コマンドラインから実行
```bash
python voice_control.py
```
### GUIアプリケーションとして実行
```bash
python control.py
```
### 音声コマンド例
以下は、音声コマンドの例です。このコマンド以外にもさまざまなコマンドが使えます。
- **デバイスの操作**
- 「電気をつけて」:電気デバイスの電源をオンにします
- 「テレビを消して」:テレビの電源をオフにします
- 「エアコンをつけて」:エアコンをオンにします
- **メディア操作(Chromecast)**
- 「再生して」:メディアの再生を開始します
- 「一時停止して」:メディアを一時停止します
- 「停止して」:メディアを停止します
- 「音量を上げて」:音量を上げます
- 「音量を下げて」:音量を下げます
- 「10秒戻して」:10秒巻き戻します
- 「30秒スキップして」:30秒早送りします
- **時間や日付の確認**
- 「今何時?」:現在の時刻を教えてくれます
- 「今日は何日?」:現在の日付を教えてくれます
- **天気情報の取得**
- 「今日の天気は?」:現在の天気情報を取得します
- 「明日の天気は?」:翌日の天気情報を取得します
- **AI対話**
- 「○○とは何ですか?」:様々な質問にAIが回答します
## 必要なAPIキー
必須:
- **Google Generative AI (Gemini)**: AI対話機能に使用
任意:
- **OpenWeatherMap API**: 天気情報の取得機能を使用する場合に必要
- **SwitchBot API**: SwitchBotデバイスを制御する場合に必要
- **Genius API**: 歌詞表示機能を使用する場合に必要
## 操作対応デバイス
- SwitchBot対応デバイス(ライト、テレビ、エアコンなど)
- Chromecast(メディア再生、音量制御)
- カスタムデバイス(コマンドライン経由で制御可能なデバイス)