Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/led-mirage/zundagpt

ずんだもんとチャットするアプリなのだ。ずんだもんの声で答えてくれるのが特徴なのだ。v0.4.0からA.I.VOICEにも対応したのだ!
https://github.com/led-mirage/zundagpt

aivoice azure-openai-service chatgpt coeiroink openai openai-api text-to-speech voicevox zundamon

Last synced: about 7 hours ago
JSON representation

ずんだもんとチャットするアプリなのだ。ずんだもんの声で答えてくれるのが特徴なのだ。v0.4.0からA.I.VOICEにも対応したのだ!

Awesome Lists containing this project

README

        

# ずんだGPT

Copyright (c) 2023-2024 led-mirage

## 概要

ずんだもんとチャットするアプリなのだ。ずんだもんの声で答えてくれるのが特徴なのだ。

v0.4.0からA.I.VOICEにも対応したのだ!

v0.6.0からCOEIROINKにも対応したのだ!

## スクリーンショット

https://github.com/led-mirage/ZundaGPT/assets/139528700/3996d2d5-0180-495d-8b12-1966e273d625

## 動作確認環境

- 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アカウントとAPIキー

チャットの部分は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のユーザーインターフェイスが不要な人は、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を購入してインストールしておく必要があるのだ。購入方法、インストール方法などは公式ページを見て欲しいのだ。もうすでに持っている人は使ってみて欲しいのだ。

A.I.VOICE … https://aivoice.jp/

### ✅ COEIROINK(オプション)

COEIROINKはVOICEVOXと同じ無料のテキスト読み上げソフトウェアなのだ。COEIROINKをダウンロードしてインストールしておけば、ずんだGPTでも使えるのだ。

COEIROINK … https://coeiroink.com/

## 実行方法

### 🛩️ 実行ファイル(EXE)を使う場合

#### 1. プロジェクト用のフォルダの作成

任意の場所にプロジェクト用のフォルダを作成するのだ。

#### 2. アプリのダウンロード

以下のリンクから ZundaGPT.ZIP をダウンロードして、作成したフォルダに展開するのだ。

https://github.com/led-mirage/ZundaGPT/releases/tag/v0.6.0

#### 3. 実行

VOICEVOX を起動したのち、ZundaGPT.exeをダブルクリックすればアプリが起動するのだ。

### 🛩️ Pythonで実行する場合

#### 1. プロジェクト用のフォルダの作成

任意の場所にプロジェクト用のフォルダを作成するのだ。

#### 2. ターミナルの起動

ターミナルかコマンドプロンプトを起動して、作成したプロジェクトフォルダに移動するのだ。

#### 3. ソースファイルのダウンロード

ZIPファイルをダウンロードして作成したフォルダに展開するのだ。
または、Gitが使える方は以下のコマンドを実行してクローンしてもOKなのだ。

```bash
git clone https://github.com/led-mirage/ZundaGPT.git
```

#### 4. ライブラリのインストール

以下のコマンドを実行して必要なライブラリをインストールするのだ。

```bash
pip install -r requirements.txt
```

#### 5. 実行

VOICEVOX を起動したのち、以下のコマンドを実行するとアプリが起動するのだ。

```bash
python main.py
```

## 設定

### ⚙️ OSの環境変数

OpenAIのAPIキーをOSの環境変数に登録しておく必要があるのだ。変数名を`OPENAI_API_KEY`として、取得したAPIキーの値を登録するのだ。

| キー | 意味 |
|------|------|
| OPENAI_API_KEY | APIキー |

Windowsの場合は、Windowsの検索窓で「環境変数を編集」で検索すると設定画面が立ち上がるので、そこでユーザー環境変数を追加すればいいのだ。

### ⚙️ アプリケーション設定ファイル(オプション)

`settings.json`ファイルにはこのアプリの設定情報が記載されているのだ。普通は特に変更する必要はないけど、自分用にカスタマイズしたい人は、このファイルをいじるといいのだ。以下に設定項目を簡単に紹介するのだ。

#### ✨ assistant_prompt(既定値 ずんだ)v0.6.0から新設

チャットアシスタントのプロンプトに表示する文字列の設定なのだ。

#### ✨ assistant_echo(既定値 true)v0.2.0から新設

チャットアシスタントが声に出して読み上げるかどうかの設定なのだ。設定できる値は`true`か`false`の2つなのだ。

※旧名 echo … v0.4.0から変更

#### ✨ assistant_tts_software(既定値 VOICEVOX)v0.4.0から新設

チャットアシスタントのテキスト読み上げに使用するソフトウェアを選択するのだ。設定できる値は、"VOICEVOX"、"AIVOICE"、"COEIROINK"、もしくはテキストを読み上げない場合に使用する""の4つなのだ。

#### ✨ assistant_speaker_id(既定値 3)

チャットアシスタントの声のIDなのだ。VOICEVOXの場合、"3"はずんだもんを意味しているのだ。VOICEVOXに収録されている他のキャラクターの声で話して欲しいときは、この値を変更すればいいのだ。キャラクターのIDを調べるには、[この資料](voicevox_speaker_list.md)を参考にするといいのだ。

A.I.VOICEの場合、ここにはキャラクターの名前かプリセットの名前を設定すればいいのだ。例えば、"琴葉 茜"とかを設定すればいいのだ。

COEIROINKの場合、ここにはキャラクターのStyleIdを指定するのだ。StyleIdは[この資料](coeiroink_speaker_list.md)を参考にしてほしいのだ。ただこの資料に載っているのは一部のキャラクターのみなのだ。使いたいキャラのStyleIdを調べるには、coeiroink_speaker_list.pyを実行してほしいのだ。

※旧名 speaker_id … v0.4.0から変更

#### ✨ assistant_speed_scale(既定値 1.2)

チャットアシスタントの読み上げの速さの設定なのだ。VOICEVOXのデフォルトは1.0なんだけど、ボクは少し早く読み上げさせたかったので1.2としているのだ。遅くしたい場合はこの値を減らせばいいのだ。

A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。

※旧名 speed_scale … v0.4.0から変更

#### ✨ assistant_pitch_scale(既定値 0.0)

チャットアシスタントの声の高さの設定なのだ。この値を増やすと、声の高さが上がるのだ。ただ、少しの変化で大きく変わるので、0.1とか0.2とか小刻みに調整するといいのだ。

A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。

※旧名 pitch_scale … v0.4.0から変更

#### ✨ user_prompt(既定値 あなた)v0.6.0から新設

あなたのメッセージのプロンプトに表示する文字列の設定なのだ。

#### ✨ user_echo(既定値 true)v0.2.0から新設

あなたのメッセージを声に出して読み上げるかどうかの設定なのだ。設定できる値は`true`か`false`の2つなのだ。

#### ✨ user_tts_software(既定値 VOICEVOX)v0.4.0から新設

あなたのメッセージのテキスト読み上げに使用するソフトウェアを選択するのだ。設定できる値は、"VOICEVOX"、"AIVOICE"、"COEIROINK"、もしくはテキストを読み上げない場合に使用する""の4つなのだ。

#### ✨ user_speaker_id(既定値 13)v0.2.0から新設

あなたの声のIDなのだ。VOICEVOXの場合、"13"は青山龍星を意味しているのだ。VOICEVOXに収録されている他のキャラクターの声で話して欲しいときは、この値を変更すればいいのだ。キャラクターのIDを調べるには、[この資料](voicevox_speaker_list.md)を参考にするといいのだ。

A.I.VOICEの場合、ここにはキャラクターの名前かプリセットの名前を設定すればいいのだ。例えば、"琴葉 茜"とかを設定すればいいのだ。

COEIROINKの場合、ここにはキャラクターのStyleIdを指定するのだ。StyleIdは[この資料](coeiroink_speaker_list.md)を参考にしてほしいのだ。ただこの資料に載っているのは一部のキャラクターのみなのだ。使いたいキャラのStyleIdを調べるには、coeiroink_speaker_list.pyを実行してほしいのだ。

#### ✨ user_speed_scale(既定値 1.2)v0.2.0から新設

あなたの声の読み上げの速さの設定なのだ。VOICEVOXのデフォルトは1.0なんだけど、ボクは少し早く読み上げさせたかったので1.2としているのだ。遅くしたい場合はこの値を減らせばいいのだ。

A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。

#### ✨ user_pitch_scale(既定値 0.0)v0.2.0から新設

あなたの声の高さの設定なのだ。この値を増やすと、声の高さが上がるのだ。ただ、少しの変化で大きく変わるので、0.1とか0.2とか小刻みに調整するといいのだ。

A.I.VOICEの場合、この設定は無効なのだ。読み上げ方はA.I.VOICE Editor側のプリセットで調整して欲しいのだ。

#### ✨ chat_api(既定値 OpenAI)

使用するAPIの設定なのだ。設定できる値は`OpenAI`と`AzureOpenAI`の二つなのだ。あまり使っている人はいないかもしれないけど、Azure OpenAI ServiceのAPIを使用する場合は`AzureOpenAI`にするのだ。

`AzureOpenAI`を使う場合は、設定しないといけない環境変数が違うので注意して欲しいのだ。

| キー | 意味 |
|------|------|
| AZURE_OPENAI_ENDPOINT | Azure OpenAI Serviceの通信先(エンドポイント)|
| AZURE_OPENAI_API_KEY | APIキー |

需要がないと思うのでAzure OpenAI Serviceの詳しい説明は省略するのだ。使いたい人は自分で調べて欲しいのだ。

#### ✨ chat_model(既定値 gpt-3.5-turbo-1106)

OpenAIのテキスト生成のモデル名を指定するのだ。これを変更することでAIの賢さが変わるのだ。既定はリーズナブルなGTP3.5を使用しているのだ。もっと賢くしたい場合はGPT4.0系も使えるけれど、その分利用量が上がるので注意するのだ。使用できるモデルの一覧と利用料金は以下のリンクで確認できるのだ。

モデルの一覧 … https://platform.openai.com/docs/models
利用料金 … https://openai.com/pricing#language-models

#### ✨ chat_character_name(既定値 ずんだ)

v0.6.0で削除されたのだ。この設定は assistant_prompt に移行されたのだ。

#### ✨ chat_instraction(既定値 君は優秀なアシスタント…以下略)

AIのキャラづけの設定なのだ。ここで、AIの台詞をずんだもんっぽくするようお願いしているのだ。ここを変更することで、ずんだもん以外のキャラクターっぽい回答を生成することも可能なのだ。

#### ✨ chat_bad_response(既定値 答えられないのだ)

何らかの原因でAIが回答できなかった場合に表示するセリフを設定するのだ。無理なお願いをするとAIが答えてくれない場合があるから気を付けるといいのだ。

#### ✨ chat_history_size(既定値 6)

AIに送信する過去の会話の履歴数を設定するのだ。この値が大きいほど前の回答、質問を考慮した回答をAIが生成するようになって、会話のつながりがよくなるのだ。ただ、その分利用料金も増えるので注意が必要なのだ。

この設定がある理由を考えればわかるけど、OpenAIのAIは過去の会話を覚えていないのだ。質問をするたびに、過去の会話もAIに送信することで、AIは会話のつながりを知ることができるのだ。ただ利用料金は送信するデータ量が増えるとその分加算されるので、バランスをとることが大事なのだ。

#### ✨ chat_log_folder(既定値 log)v0.2.0から新設

チャットのログファイルを保存するフォルダを指定するのだ。この値が空文字の場合はログは保存されないのだ。

#### ✨ voicevox_autorun(既定値 true)v0.3.0から新設

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_path(既定値 %LOCALAPPDATA%/Programs/VOICEVOX/VOICEVOX.exe)v0.3.0から新設

VOICEVOXの実行ファイルのパスを記載するのだ。この項目がない場合は、VOICEVOXのWindowsへの既定のインストール先が使われるのだ。

#### ✨ aivoice_path(既定値 %ProgramW6432%/AI/AIVoice/AIVoiceEditor/AI.Talk.Editor.Api.dll)v0.4.0から新設

A.I.VOICEのDLLのパスを記載するのだ。この項目がない場合は、A.I.VOICEの既定のインストール先の設定が使われるのだ。

#### ✨ coeiroink_path(既定値 空文字)v0.6.0から新設

COEIROINKの実行ファイルのパスを記載するのだ。COEIROINKは既定のインストール場所がないから、自分がインストールした場所(解凍した場所)を記載するのだ。例えば次のように記載するのだ。

```json
"coeiroink_path": "C:/Program Files/COEIROINK_GPU/COEIROINKv2.exe"
```

なんのことかわからない人は、COEIROINKを起動してから、ずんだGPTを使えば問題ないのだ。

## コマンド

### ⛏️ @assistant

チャットアシスタントの声の設定情報を表示するコマンドなのだ。

### ⛏️ @assistant_prompt [文字列]

チャットアシスタントのプロンプトを設定するコマンドなのだ。

### ⛏️ @assistant_echo [ on | off ] ( エイリアス @echo )

チャットアシスタントが回答を声に出して読み上げるかどうかを設定するコマンドなのだ。

### ⛏️ @assistant_tts_software [VOICEVOX | AIVOICE | COEIROINK]

チャットアシスタントのテキスト読み上げに使用するソフトウェアを設定するコマンドなのだ。

### ⛏️ @assistant_speaker_id [文字列] ( エイリアス @speaker_id )

チャットアシスタントの声を設定するコマンドなのだ。

### ⛏️ @assistant_speed_scale [数値] ( エイリアス @speed_scale )

チャットアシスタントの読み上げの速さを設定するコマンドなのだ。

### ⛏️ @assistant_pitch_scale [数値] ( エイリアス @pitch_scale )

チャットアシスタントの声の高さを設定するコマンドなのだ。

### ⛏️ @user

あなたの声の設定情報を表示するコマンドなのだ。

### ⛏️ @user_prompt [文字列]

あなたのプロンプト文字列を設定するコマンドなのだ。

### ⛏️ @user_echo [ on | off ]

あなたの書いたテキストを声に出して読み上げるかどうかを設定するコマンドなのだ。

### ⛏️ @user_tts_software [VOICEVOX | AIVOICE | COEIROINK]

あなたの書いたテキストを読み上げるのに使用するソフトウェアを設定するコマンドなのだ。

### ⛏️ @user_speaker_id [文字列]

あなたの声を設定するコマンドなのだ。

### ⛏️ @user_speed_scale [数値]

あなたメッセージを読み上げる速さを設定するコマンドなのだ。

### ⛏️ @user_pitch_scale [数値]

あなたの声の高さを設定するコマンドなのだ。

### ⛏️ @prev ( エイリアス - )

ひとつ前のチャット内容をロードするのだ。連続して実行するとどんどん前に遡っていけるのだ。

### ⛏️ @next ( エイリアス + )

ひとつ後のチャット内容をロードするのだ。

## 出力ファイル

### 🗒️ チャットログファイル

チャットのログはlogファルダに出力されるのだ。出力先はsettings.jsonファイルで変更することもできるのだ。アプリが起動してから終了するまでを1ファイルで出力するのだよ。

### 🗒️ OpenAI API利用量確認ファイル

`monthly_token_usage.json`ファイルは、このアプリで使用したOpenAI APIの利用量(トークン数)を月別に記録するファイルなのだ。利用料はトークン数(会話の量)で算出されるので、この値を参考にするといいのだ。

ただ、モデルによる利用料金の違いや、質問と回答に対する利用料金が異なるなどの細かい点は考慮していないので、あくまで参考までとして欲しいのだ。正確な使用量はOpenAIのサイトで確認してほしいのだ。

OpenAI APIの使い方を変更したのに伴って、v0.5.0で廃止したのだ。申し訳ないのだ。

使用料はOpenAIのサイトで確認してほしいのだ。

## 注意事項

### ⚡ OpenAIの利用料金について

このアプリは無料だけど、OpenAI APIを使うには別途料金が発生するのだ(お試し用の無料枠もあるけど)。なので、使い過ぎには注意するのだ。定期的にOpenAIのサイトで現在の利用状況を確認するなどして自己管理して欲しいのだ。

そもそも自動チャージ設定を有効にしなければチャージされた分しか課金されないはずなので、そこまで心配する必要はないけれど、OpenAIのサイトでは月毎の利用上限なども設定できるのでそれらを活用して思わぬ出費を防ぐといいのだ。

### ⚡ APIキーについて

APIキーはあなただけのものなので、人に教えたらダメなのだ。流出すると悪い人に勝手に使われてしまう可能性があるのだ。もし流出してしまったら、OpenAIのサイトで現在使っているAPIキーを削除して、別のAPIキーを作ればいいのだ。

ただ、APIキーをひとつしか持っていない場合、新しいAPIキーを作ってからじゃないと古いAPIキーを削除できないようなのだ。これはOpenAIの仕様のようなんだけど、ボク的にはちょっといただけない仕様だと思っているのだ。将来的に改善することを願っているけれど、最悪支払い情報(クレジットカード情報)を削除してしまえばいいような気もするのだ。

なにわともあれ、APIキーと利用料金には注意を払って欲しいのだ。

### ⚡ IMEの設定について

WindowsのIME設定で「以前のバージョンのMicrosoft IMEを使う」という項目がオンになっていると、日本語入力の最中にフリーズしたり、アプリが落ちたりする現象が確認されているのだ。既定値はオフなのでこの現象に遭遇することはあまりないだろうけど、もし同じ現象にあったら設定を確認してみるといいのだ。

### ⚡ 免責事項

いまのところ特に問題点は見つかっていないけど、バグなんてものは潜在的に必ずあるし、0になるなんてことはあり得ないのだ。また、もしバグがあってそのせいで貴方に損害を与えたとしても、著作権者はいかなる責任も負いかねるのでその点を理解して使って欲しいのだ。

## 使用しているライブラリ

### 🔖 openai 1.4.0

ホームページ: https://github.com/openai/openai-python
ライセンス:Apache License 2.0

### 🔖 requests 2.31.0

ホームページ: https://requests.readthedocs.io/en/latest/
ライセンス:Apache License 2.0

### 🔖 PyAudio 0.2.14

ホームページ: https://people.csail.mit.edu/hubert/pyaudio/
ライセンス:MIT License

### 🔖 psutil 5.9.7

ホームページ:https://psutil.readthedocs.io/en/latest/#
ライセンス:BSD 3-Clause License

### 🔖 pythonnet 3.0.3

ホームページ:https://github.com/pythonnet/pythonnet
ライセンス:MIT License

## ライセンス

© 2023 led-mirage

本アプリケーションは [MITライセンス](https://opensource.org/licenses/MIT) の下で公開されているのだ。詳細については、プロジェクトに含まれる LICENSE ファイルを参照して欲しいのだ。

## バージョン履歴

### 0.1.0 (2023/12/16)

- ファーストリリース

### 0.2.0 (2023/12/18)

- チャットのログを保存する機能を追加
- ユーザー(あなた)のメッセージを読み上げる機能を追加
- 設定用のコマンドを追加
- chat_history_sizeが効かないバグを修正

### 0.3.0 (2023/12/24)

- VOICEVOX自動起動機能を追加

### 0.3.1 (2023/12/24)

- バグ修正(ユーザーのメッセージを読み上げるタイミングを変更)

### 0.4.0 (2023/12/28)

- A.I.VOICE対応
- コマンドの追加
- 設定ファイル再編

### 0.5.0 (2023/12/29)

- レスポンス性の向上(OpenAI APIのレスポンスをチャンク処理するように変更)
- 利用トークン記録機能の廃止

### 0.5.1 (2024/01/07)

- リソース開放処理の修正

### 0.6.0 (2024/01/14)

- COEIROINK対応
- プロンプト文字列設定の変更と追加

## さいごに

楽しいと感じてくれると嬉しいのだ。また、使った感想などをissueなどに書き込んでくれるともっと嬉しいのだ。不定期でバージョンアップしていく予定なのでよろしくお願いしますなのだ。

それでは、ハッピー・コーディング!