Overview
Text to speech, speech to text, auto-recognized translation system. I want it in this software.
普段聞き専の方向けの汎用擬似VCツールです。ゲーム等で使用できます。
各種APIで音声認識を行い、以下の機能を実現することを目指します。
- 機械音声を合成しての発声代替機能
- text-to-speechのAPIを利用して多彩な音声・カスタマイズを提供
- ループバックサウンドから音声認識しての翻訳聴き専機能
- 英語圏・中華圏等でプレイ中のVC聞き専できる機能を提供
- 2017/06/17 初回公開。
- 2017/06/24 BingSpeechAPIの暫定追加。GoogleCloudSpeechAPIと比べて大声で話す必要がある。辞書機能はまだ対応していません。
- 2017/07/01 BingSpeechAPIに単語辞書を追加するにはCustom Speech Serviceというのに申し込む必要がある模様。諦める。
- 2017/07/11 簡易的なログ読み上げ機能を実装。テキストチャットログファイルを監視して読み上げます。テキストチャット見逃し防止にどうぞ。
- 2017/07/16 簡易ログ読み上げ機能が面白かったので強化。各人ニックネームを認識して、音声を固定する機能を実装。
- 2017/07/17 OCRでのテキストチャット読み上げ機能を実装。作ってみてテストして、使い物にならない精度であることが分かった程度。ネタ機能にもならないが実装を捨てるのがもったいないのでコミット。
- 2017/07/29 音声認識発声機能がバグってメタメタだったので再調整。APIの更新に合わせて動作も変わっていた模様。だいぶ良くなったと思うのでテスト待ち。
- 2017/09/09 MS音声認識を利用したラジオチャットモードを一応実装。それに伴い初期語彙を増やした。ラジオチャットモードは語彙を増やしたら使い物にならなくなった・・。それこそ「v52!」とか記号的な発言で動かしたほうが認識するかもしれない。Windows付属のトレーニングを1時間かけてやったが認識率は向上しなかった。。語彙は、ボイスチャットモードの認識辞書にフィードバックしたので、Appdata/Local/Kikisen-VC/うんぬんにある設定ファイルを初期化すると初期語彙が大量に登録されます。一応ArmaとかPUBGで使える語彙は洗い出したはず。
- 2017/11/05 Intel Realsenseに対応しました。こちらからDLしてインストールしてください。詳しいインストールオプションはNAMAROIDさまのほうを参考にしてください。暫定対応なので、単語辞書等は使えません。
- 2017/11/05 OpenJTalkを組み込みました。ネット上に公開されている.htsvoiceファイルを探してopen_jtalkフォルダに設置すると多彩なボイスを楽しめます。
- 2017/11/05 ラジオチャットモードにIntelReakSence用を追加しました。
- 2017/11/12 いったん区切りとしてコミット。今の時点で機械に通訳はできそうにないので、別の方向性を考える必要がありそう。という結論。今後はラジオチャットに特化した方向等、なにがしかの工夫で今の時点の技術と付き合う方法を探る予定。
- 機械音声を合成しての発声代替機能
VCは環境音が混ざるのが嫌、少し気恥ずかしい。でもVCで発言してみたい。それが開発動機でした。外部仮想サウンドデバイス作成ソフトの導入が必要ですが、合成音声で混じりっ気なしの合成音声によるVCが実現できます。
Windowsならばデフォルトの音声認識APIを利用することもできます。ですが、トレーニングしないととても使い物にならない認識精度です。できれば外部APIを利用するオプションを検討してください。
- ループバックサウンドから音声認識しての翻訳聴き専機能
海外サーバーでゲームをしているとVCが活発で驚きます。ただ何を言ってるのかさっぱり聞き取れません。せっかく音声認識・合成発声ソフトを作ったのだから、外国語の聞き取り→翻訳→日本語で発声まで実現できないかなと思って実装してみました。
ですが、いまのところ使い物にならない実験的な機能です。このままひとりで開発していても実用的な機能には至らないと思いました。GitHubにソフトを公開することで、一人でも多くの人がコンセプトに興味を持ってくれ、開発に参加を検討してくれることを望みます。
- GoogleCloudSpeechAPIを利用した場合は高い認識率
- VoiceTextWebAPIを利用した場合は多彩な機械音声
- 発声代替機能は、マイク代替なのでVCが使える全てのゲームで動作可能
- 雑音や咀嚼音、ため息、キーボード音や環境音など入らない純粋な発声代替機能
- 聞いた英語の日本語訳がすぐわかるので英語学習能力もUpするかもしれません。将来的に。
- new! OpenJTalkを組み込みました。.htsvoiceファイルを探してopen_jtalkフォルダに設置すると多彩なボイスを楽しめます。
- new! Intel Realsenseに対応しました。こちらからDLしてインストールしてください。詳しいインストールオプションはNAMAROIDさまのほうを参考にしてください。暫定対応なので、単語辞書等は使えません。
- クラウドAPIを使う場合、回線状況によってはpingに影響を及ぼす
- NetduettoやVirtual Audio Cables等の仮想サウンド作成デバイスの併用が必要
- 同様コンセプト系ソフト - NAMAROID - ゆかりねっと
- ソフト組み合わせで実現系、似たようなコンセプト - 【棒読みちゃん】LINEやSkypeの通話でゆっくりボイスを使ってみた - 棒読みちゃんをマイク代わりに使う - Windows標準の音声認識ソフトでテキストを入力する方法【マイク】 - 各種チャット用 音声入力Toolによる作業しながらのゆっくり生放送に挑戦してみる(ゆっくり増産計画) - SERIFU -script text to speech tool- - 棒読みちゃんプラグイン Voicetext Talk Ver1.5.0.0
使用は自由ですが、改変しての再配布はソースを開示してください。
- 開発環境
- VisualStudio
- Nugetで以下の導入が必要。
- Google.Cloud.Speech.V1
- Google.Apis.Translate.v2
- System.Net.Http
- NAudio
- Microsoft Cognitive Services Speech Recognition API Client Library for x64 build
- Microsoft Cognitive Services Speech Recognition API Client Library for x86 build
- 使用環境
- .Net Framework 4以上
- 「Windows音声認識API」で英語認識をさせる場合は、Windowsの英語音声認識エンジンの追加導入が必要。
- 「en-US」を言語に追加してください。Microsoft Forum
- オプションを使うのに必要なもの
- Google Cloud Speech API json key
- Google Translator API web key
- HOYA VoiceTextWebAPIのAPIキー
- 仮想サウンドデバイス作成ソフト
- マイクブースト適用ソフト(マイクブーストのないヘッドセットにも使えます。+20dbするとかなり効果的です)
- Intel® RealSense™ SDK
-
発声代替機能の使い方の設定例等
- 仮想サウンドデバイス作成ソフトをインストールして、録音側を「既定のデバイス」に設定します。
- 「Inputデバイス」に使用中のマイクを指定します。
- 「Outputデバイス」に仮想サウンドデバイスを指定します。
- 「音声認識API」「SpeechAPI」を適当に選んで設定します。Microsoft Harukaを使うとPingへの影響が軽減されるかもしれません。OpenJTalkも同様。
- 「翻訳API」を「翻訳なし」に設定します。「翻訳設定」を「Jpn→Eng」に設定します。
- 必要に応じて「単語辞書」に発声単語を登録しておきます。
- マイクに喋ります。選択した「SpeechAPI」を使って発声が行われます。(イメージ)
-
翻訳聴き専機能の使い方の設定例等
- 「Inputデバイス」に「Wasapi Loopback」を指定します。
- ※要課題「Outputデバイス」にお使いのスピーカー・ヘッドセットを選択します。現在プログラムの問題で、お使いのデバイス以外のものを選べる場合はそれを指定してください。(イヤホンなど併用できる場合はそれを使うなど)
- 「音声認識API」「SpeechAPI」を適当に選んで設定します。Microsoft Harukaを使うとPingへの影響が軽減されるかもしれません。
- 「翻訳API」「API key」にGoogleTranslatorAPIのWebkeyを入力して認証します。
- 「翻訳API」を「GoogleTranslatorAPI」に設定します。「翻訳設定」を「Eng→Jpn」に設定します。
- 「翻訳設定」を「Eng→Jpn」に設定して、「翻訳API」を「翻訳なし」にすると英語のまま認識を出力されるかもしれません。
- 翻訳聞き専機能はループバックサウンドをキャプチャするため、翻訳発声も拾ってしまう。
- 英語→日本語の場合でも、カナ英語など混じるとVCと勘違いして二重に翻訳が動く。
- 対策としては翻訳発声のサウンド出力を既定出力サウンドデバイスと違うものに変える必要があるが、通常はヘッドセット一本で使用していると思われるため、現実的ではない。
- GoogleCloudSpeechAPIや、GoogleTranslatorAPIなどの利用は有料。API呼び出し回数はできるだけ抑える必要があるが、レスポンスを高めるためストリーミング音声認識APIを利用すると、1分あたり1回のAPI呼び出しが必須。時間課金と変わらない。
- GoogleTranslatorAPIも課題は山積み。API呼び出し回数を抑えるためには出来るだけ高い精度で文脈の区切りを見つけて翻訳APIに投げる処理が必要。現在はその処理が甘く、二重三重呼び出し・区切りが甘い等でとんでもない回数APIを呼び出してしまう。1分で100回くらい。。
- 音声認識APIはAPIによって違う処理の実装が必要。さらに言語によっての最適化が必要。その最適化処理がまだまだ甘い。
音声認識APIにIntel Real Senseを選べるようにしたい。ローカルエンジンなので、Ping影響なしに使える利点がある。- Intel Realsense SDKは2016R3から有料配布になった模様。普通の方法ではDLできないので中止。
- 代わりにBing Speech APIを使いたい。月5000トランザクションまで無料なので、1トランザクション14秒制限はあるが、単純計算で14sec * 5000tra = 70000sec, 月19.4時間までは無料で使えそうな勘定。1回2時間のゲームセッションを月10回は聞き専としては妥当だと思う。
- 翻訳APIに無料のものがあれば使いたい。有料しかなさげ。
- GoogleCloudSpeechAPIは、2017/7/31までにGA版にアップデートが必要。まだ対応できていない。
-
音声入出力デバイス設定関係(設定詳細はUsageを参照のこと)
-
音声認識API設定関係(認証JSONファイルを指定してください)
-
VoiceTextWebAPIを利用した場合(ここでAPIkey設定、ログ出力もここ)
-
翻訳設定関係(ここで設定)
-
ステータス関係(ここで大体の状況を認識)
-
単語辞書機能(入力すると自動保存されます、「|」パイプ区切りで入力)
-
音声認識ログサンプル(GoogleCloudSpeechAPI使用の場合)
-
英語でのループバック入力→翻訳聴き専機能