An open API service indexing awesome lists of open source software.

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製アプリケーションです。

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(メディア再生、音量制御)
- カスタムデバイス(コマンドライン経由で制御可能なデバイス)