Copyright (c) 2023-2024 led-mirage
ずんだもんとチャットするアプリなのだ。ずんだもんの声で答えてくれるのが特徴なのだ。
v0.4.0からA.I.VOICEにも対応したのだ!
v0.6.0からCOEIROINKにも対応したのだ!
screenshot0.5.1.mp4
- Windows 11 Pro 23H2
- Python 3.12.0
- VOICEVOX 0.14.10
- VOICEVOX ENGINE 0.14.6
- A.I.VOICE Editor 1.4.9.0
- COEIROINK v.2.2.1
チャットの部分はOpenAIのAIを使用しているので、OpenAIのアカウントとAPIの利用登録(課金およびAPIキーの作成)が必要なのだ。
アカウントを作成すると、作ってから3ヵ月間有効な無料枠($18)があるようなので、それを使ってもいいのだ。ボクの場合は利用開始から3ヵ月以上経ってしまっていたので、無料枠は利用できなくて、仕方ないから$10課金したのだ。
APIキーの作成は特に難しくないのだ。OpenAI APIの設定画面に入って、左側のAPI Keys
というメニューから新しいAPIキーを作成すればいいのだ。作成するときに表示されるAPIキーは、作成後には2度と表示できないからメモ帳などにコピペして保存しておくといいのだ。このキーはあとから設定に必要になるのだ。
OpenAI … https://platform.openai.com/
ずんだもんの声でチャットを読み上げてもらうにはVOICEVOXをインストールしておく必要があるのだ。VOICEVOXは公式サイトからダウンロードして簡単にインストールできるのだ。
VOICEVOXのユーザーインターフェイスが不要な人は、VOICEVOX Engineを利用することもできるのだ。少し玄人向けなので、分からない人は素直にVOICEVOXを利用するのがお勧めなのだ。
声が不要な人はVOICEVOXをインストールする必要はないのだ。ずんだもんがテキストだけでチャットしてくれるのだ。
VOICEVOX … https://voicevox.hiroshiba.jp/
VOICEVOX Engine … https://github.com/VOICEVOX/voicevox_engine
A.I.VOICEで話してもらうにはA.I.VOICEを購入してインストールしておく必要があるのだ。購入方法、インストール方法などは公式ページを見て欲しいのだ。もうすでに持っている人は使ってみて欲しいのだ。
A.I.VOICE … https://aivoice.jp/
COEIROINKはVOICEVOXと同じ無料のテキスト読み上げソフトウェアなのだ。COEIROINKをダウンロードしてインストールしておけば、ずんだGPTでも使えるのだ。
COEIROINK … https://coeiroink.com/
任意の場所にプロジェクト用のフォルダを作成するのだ。
以下のリンクから ZundaGPT.ZIP をダウンロードして、作成したフォルダに展開するのだ。
https://github.com/led-mirage/ZundaGPT/releases/tag/v0.6.0
VOICEVOX を起動したのち、ZundaGPT.exeをダブルクリックすればアプリが起動するのだ。
任意の場所にプロジェクト用のフォルダを作成するのだ。
ターミナルかコマンドプロンプトを起動して、作成したプロジェクトフォルダに移動するのだ。
ZIPファイルをダウンロードして作成したフォルダに展開するのだ。
または、Gitが使える方は以下のコマンドを実行してクローンしてもOKなのだ。
git clone https://github.com/led-mirage/ZundaGPT.git
以下のコマンドを実行して必要なライブラリをインストールするのだ。
pip install -r requirements.txt
VOICEVOX を起動したのち、以下のコマンドを実行するとアプリが起動するのだ。
python main.py
OpenAIのAPIキーをOSの環境変数に登録しておく必要があるのだ。変数名をOPENAI_API_KEY
として、取得したAPIキーの値を登録するのだ。
キー | 意味 |
---|---|
OPENAI_API_KEY | APIキー |
Windowsの場合は、Windowsの検索窓で「環境変数を編集」で検索すると設定画面が立ち上がるので、そこでユーザー環境変数を追加すればいいのだ。
settings.json
ファイルにはこのアプリの設定情報が記載されているのだ。普通は特に変更する必要はないけど、自分用にカスタマイズしたい人は、このファイルをいじるといいのだ。以下に設定項目を簡単に紹介するのだ。
チャットアシスタントのプロンプトに表示する文字列の設定なのだ。
チャットアシスタントが声に出して読み上げるかどうかの設定なのだ。設定できる値はtrue
かfalse
の2つなのだ。
※旧名 echo … v0.4.0から変更
チャットアシスタントのテキスト読み上げに使用するソフトウェアを選択するのだ。設定できる値は、"VOICEVOX"、"AIVOICE"、"COEIROINK"、もしくはテキストを読み上げない場合に使用する""の4つなのだ。
チャットアシスタントの声のIDなのだ。VOICEVOXの場合、"3"はずんだもんを意味しているのだ。VOICEVOXに収録されている他のキャラクターの声で話して欲しいときは、この値を変更すればいいのだ。キャラクターのIDを調べるには、この資料を参考にするといいのだ。
A.I.VOICEの場合、ここにはキャラクターの名前かプリセットの名前を設定すればいいのだ。例えば、"琴葉 茜"とかを設定すればいいのだ。
COEIROINKの場合、ここにはキャラクターのStyleIdを指定するのだ。StyleIdはこの資料を参考にしてほしいのだ。ただこの資料に載っているのは一部のキャラクターのみなのだ。使いたいキャラのStyleIdを調べるには、coeiroink_speaker_list.pyを実行してほしいのだ。
※旧名 speaker_id … v0.4.0から変更
チャットアシスタントの読み上げの速さの設定なのだ。VOICEVOXのデフォルトは1.0なんだけど、ボクは少し早く読み上げさせたかったので1.2としているのだ。遅くしたい場合はこの値を減らせばいいのだ。
A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。
※旧名 speed_scale … v0.4.0から変更
チャットアシスタントの声の高さの設定なのだ。この値を増やすと、声の高さが上がるのだ。ただ、少しの変化で大きく変わるので、0.1とか0.2とか小刻みに調整するといいのだ。
A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。
※旧名 pitch_scale … v0.4.0から変更
あなたのメッセージのプロンプトに表示する文字列の設定なのだ。
あなたのメッセージを声に出して読み上げるかどうかの設定なのだ。設定できる値はtrue
かfalse
の2つなのだ。
あなたのメッセージのテキスト読み上げに使用するソフトウェアを選択するのだ。設定できる値は、"VOICEVOX"、"AIVOICE"、"COEIROINK"、もしくはテキストを読み上げない場合に使用する""の4つなのだ。
あなたの声のIDなのだ。VOICEVOXの場合、"13"は青山龍星を意味しているのだ。VOICEVOXに収録されている他のキャラクターの声で話して欲しいときは、この値を変更すればいいのだ。キャラクターのIDを調べるには、この資料を参考にするといいのだ。
A.I.VOICEの場合、ここにはキャラクターの名前かプリセットの名前を設定すればいいのだ。例えば、"琴葉 茜"とかを設定すればいいのだ。
COEIROINKの場合、ここにはキャラクターのStyleIdを指定するのだ。StyleIdはこの資料を参考にしてほしいのだ。ただこの資料に載っているのは一部のキャラクターのみなのだ。使いたいキャラのStyleIdを調べるには、coeiroink_speaker_list.pyを実行してほしいのだ。
あなたの声の読み上げの速さの設定なのだ。VOICEVOXのデフォルトは1.0なんだけど、ボクは少し早く読み上げさせたかったので1.2としているのだ。遅くしたい場合はこの値を減らせばいいのだ。
A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。
あなたの声の高さの設定なのだ。この値を増やすと、声の高さが上がるのだ。ただ、少しの変化で大きく変わるので、0.1とか0.2とか小刻みに調整するといいのだ。
A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。
使用するAPIの設定なのだ。設定できる値はOpenAI
とAzureOpenAI
の二つなのだ。あまり使っている人はいないかもしれないけど、Azure OpenAI ServiceのAPIを使用する場合はAzureOpenAI
にするのだ。
AzureOpenAI
を使う場合は、設定しないといけない環境変数が違うので注意して欲しいのだ。
キー | 意味 |
---|---|
AZURE_OPENAI_ENDPOINT | Azure OpenAI Serviceの通信先(エンドポイント) |
AZURE_OPENAI_API_KEY | APIキー |
需要がないと思うのでAzure OpenAI Serviceの詳しい説明は省略するのだ。使いたい人は自分で調べて欲しいのだ。
OpenAIのテキスト生成のモデル名を指定するのだ。これを変更することでAIの賢さが変わるのだ。既定はリーズナブルなGTP3.5を使用しているのだ。もっと賢くしたい場合はGPT4.0系も使えるけれど、その分利用量が上がるので注意するのだ。使用できるモデルの一覧と利用料金は以下のリンクで確認できるのだ。
モデルの一覧 … https://platform.openai.com/docs/models
利用料金 … https://openai.com/pricing#language-models
v0.6.0で削除されたのだ。この設定は assistant_prompt に移行されたのだ。
AIのキャラづけの設定なのだ。ここで、AIの台詞をずんだもんっぽくするようお願いしているのだ。ここを変更することで、ずんだもん以外のキャラクターっぽい回答を生成することも可能なのだ。
何らかの原因でAIが回答できなかった場合に表示するセリフを設定するのだ。無理なお願いをするとAIが答えてくれない場合があるから気を付けるといいのだ。
AIに送信する過去の会話の履歴数を設定するのだ。この値が大きいほど前の回答、質問を考慮した回答をAIが生成するようになって、会話のつながりがよくなるのだ。ただ、その分利用料金も増えるので注意が必要なのだ。
この設定がある理由を考えればわかるけど、OpenAIのAIは過去の会話を覚えていないのだ。質問をするたびに、過去の会話もAIに送信することで、AIは会話のつながりを知ることができるのだ。ただ利用料金は送信するデータ量が増えるとその分加算されるので、バランスをとることが大事なのだ。
チャットのログファイルを保存するフォルダを指定するのだ。この値が空文字の場合はログは保存されないのだ。
v0.4.0で削除されたのだ。VOICEVOXやA.I.VOICEなどの必要なソフトウェアは自動的に起動を試みるのだ。
✨ voicevox_server(既定値 http://127.0.0.1:50021)
VOICEVOXのサーバーのURLを記載するのだ。これがVOICEVOXのデフォルトなので、普通はここを変更する必要はないのだ。分かる人はわかると思うんだけど、このIPは自PCのIPになっているのだ。他のPCで実行しているVOICEVOXに声を生成してもらう場合は、このURLを変更すればいいのだ。ただ、ファイアウォールの設定とかいろいろ面倒なので、分からない人は気にする必要はないのだ。
VOICEVOXの実行ファイルのパスを記載するのだ。この項目がない場合は、VOICEVOXのWindowsへの既定のインストール先が使われるのだ。
A.I.VOICEのDLLのパスを記載するのだ。この項目がない場合は、A.I.VOICEの既定のインストール先の設定が使われるのだ。
COEIROINKの実行ファイルのパスを記載するのだ。COEIROINKは既定のインストール場所がないから、自分がインストールした場所(解凍した場所)を記載するのだ。例えば次のように記載するのだ。
"coeiroink_path": "C:/Program Files/COEIROINK_GPU/COEIROINKv2.exe"
なんのことかわからない人は、COEIROINKを起動してから、ずんだGPTを使えば問題ないのだ。
チャットアシスタントの声の設定情報を表示するコマンドなのだ。
チャットアシスタントのプロンプトを設定するコマンドなのだ。
チャットアシスタントが回答を声に出して読み上げるかどうかを設定するコマンドなのだ。
チャットアシスタントのテキスト読み上げに使用するソフトウェアを設定するコマンドなのだ。
チャットアシスタントの声を設定するコマンドなのだ。
チャットアシスタントの読み上げの速さを設定するコマンドなのだ。
チャットアシスタントの声の高さを設定するコマンドなのだ。
あなたの声の設定情報を表示するコマンドなのだ。
あなたのプロンプト文字列を設定するコマンドなのだ。
あなたの書いたテキストを声に出して読み上げるかどうかを設定するコマンドなのだ。
あなたの書いたテキストを読み上げるのに使用するソフトウェアを設定するコマンドなのだ。
あなたの声を設定するコマンドなのだ。
あなたメッセージを読み上げる速さを設定するコマンドなのだ。
あなたの声の高さを設定するコマンドなのだ。
ひとつ前のチャット内容をロードするのだ。連続して実行するとどんどん前に遡っていけるのだ。
ひとつ後のチャット内容をロードするのだ。
チャットのログはlogファルダに出力されるのだ。出力先はsettings.jsonファイルで変更することもできるのだ。アプリが起動してから終了するまでを1ファイルで出力するのだよ。
monthly_token_usage.json
ファイルは、このアプリで使用したOpenAI APIの利用量(トークン数)を月別に記録するファイルなのだ。利用料はトークン数(会話の量)で算出されるので、この値を参考にするといいのだ。
ただ、モデルによる利用料金の違いや、質問と回答に対する利用料金が異なるなどの細かい点は考慮していないので、あくまで参考までとして欲しいのだ。正確な使用量はOpenAIのサイトで確認してほしいのだ。
OpenAI APIの使い方を変更したのに伴って、v0.5.0で廃止したのだ。申し訳ないのだ。
使用料はOpenAIのサイトで確認してほしいのだ。
このアプリは無料だけど、OpenAI APIを使うには別途料金が発生するのだ(お試し用の無料枠もあるけど)。なので、使い過ぎには注意するのだ。定期的にOpenAIのサイトで現在の利用状況を確認するなどして自己管理して欲しいのだ。
そもそも自動チャージ設定を有効にしなければチャージされた分しか課金されないはずなので、そこまで心配する必要はないけれど、OpenAIのサイトでは月毎の利用上限なども設定できるのでそれらを活用して思わぬ出費を防ぐといいのだ。
APIキーはあなただけのものなので、人に教えたらダメなのだ。流出すると悪い人に勝手に使われてしまう可能性があるのだ。もし流出してしまったら、OpenAIのサイトで現在使っているAPIキーを削除して、別のAPIキーを作ればいいのだ。
ただ、APIキーをひとつしか持っていない場合、新しいAPIキーを作ってからじゃないと古いAPIキーを削除できないようなのだ。これはOpenAIの仕様のようなんだけど、ボク的にはちょっといただけない仕様だと思っているのだ。将来的に改善することを願っているけれど、最悪支払い情報(クレジットカード情報)を削除してしまえばいいような気もするのだ。
なにわともあれ、APIキーと利用料金には注意を払って欲しいのだ。
WindowsのIME設定で「以前のバージョンのMicrosoft IMEを使う」という項目がオンになっていると、日本語入力の最中にフリーズしたり、アプリが落ちたりする現象が確認されているのだ。既定値はオフなのでこの現象に遭遇することはあまりないだろうけど、もし同じ現象にあったら設定を確認してみるといいのだ。
いまのところ特に問題点は見つかっていないけど、バグなんてものは潜在的に必ずあるし、0になるなんてことはあり得ないのだ。また、もしバグがあってそのせいで貴方に損害を与えたとしても、著作権者はいかなる責任も負いかねるのでその点を理解して使って欲しいのだ。
ホームページ: https://github.com/openai/openai-python
ライセンス:Apache License 2.0
ホームページ: https://requests.readthedocs.io/en/latest/
ライセンス:Apache License 2.0
ホームページ: https://people.csail.mit.edu/hubert/pyaudio/
ライセンス:MIT License
ホームページ:https://psutil.readthedocs.io/en/latest/#
ライセンス:BSD 3-Clause License
ホームページ:https://github.com/pythonnet/pythonnet
ライセンス:MIT License
© 2023 led-mirage
本アプリケーションは MITライセンス の下で公開されているのだ。詳細については、プロジェクトに含まれる LICENSE ファイルを参照して欲しいのだ。
- ファーストリリース
- チャットのログを保存する機能を追加
- ユーザー(あなた)のメッセージを読み上げる機能を追加
- 設定用のコマンドを追加
- chat_history_sizeが効かないバグを修正
- VOICEVOX自動起動機能を追加
- バグ修正(ユーザーのメッセージを読み上げるタイミングを変更)
- A.I.VOICE対応
- コマンドの追加
- 設定ファイル再編
- レスポンス性の向上(OpenAI APIのレスポンスをチャンク処理するように変更)
- 利用トークン記録機能の廃止
- リソース開放処理の修正
- COEIROINK対応
- プロンプト文字列設定の変更と追加
楽しいと感じてくれると嬉しいのだ。また、使った感想などをissueなどに書き込んでくれるともっと嬉しいのだ。不定期でバージョンアップしていく予定なのでよろしくお願いしますなのだ。
それでは、ハッピー・コーディング!