マルチゲーム参加をしているときに、VCは抵抗あるけどリアクションを伝えたいと思った
首を上下に沢山ふってみたり、ふしぎなスクワットをしたりしてみた。ナイフをキンキンしてみたり。
色んな手段で代替してきたけども、、敗退が続いて場の雰囲気が重くなってくると打つ手がない。
仲間に笑って負けを受け入れていることを伝えたい。楽しんでることを伝えたい。
そんな重い場面を打開したい思いから開発が始まりました。
Steamで1/16リリース。ストア公開しました。
MobMateを作りました。
https://qiita.com/zufall/items/2e027a2bc996864fe4af
10年越しに前に作ったプロジェクトを更新した感じになりました。
以前は音声認識はお粗末なものしかなく、Googleクラウドを利用した有料のSTTを組み込むくらいしかありませんでした。
ただそれも精度は荒く、、10年越しにWisper.cppという画期的なAI音声認識ソリューションが出てきたので今回の更新にこぎつけました。
これが今どきは完全オフライン完結で出来るというのだからすごい!
STT → 文字吐き出し → TTS のパッケージ化です
貴族キャラが付き人に小声で囁いて、付き人が「~様はこうおっしゃっておられる!」というシーンを想定してください。
そんな感じの動作をします。
自分はモブに徹したい。だけどたまにはVCでリアクション返したい。
*YoutubeLiveなどの配信読み上げなどでおなじみ、モブにはモブの無個性な声が場の空気を邪魔しません。
肉声だとどうしても余計な要素が伝わってしまいますからね…
ならば機械の読み上げに混じってぼそっと喋れるツールを作れば・・、という開発動機で作られています。
Windows標準読み上げ音声(ほぼゆっくり音声)以外の対応もAPIで実現
VoicevoxのAPIに対応しています。APIでwavファイルさえ返ってくれば、ほかのAPIにも対応可能のはず。
読み上げ部分はwavファイルパスをpowershellスクリプトで再生するだけなので汎用的かと思っています。
ggml-smallは笑い声を「(笑)」と認識してくれる!
whisper.cppで対応のggml-small.binモデルを採用しています。(上位モデルに差し替えも可能)
これが笑い声を検知して「(笑)」と出力してくれるのがブレイクスルーでした・・!
この(笑)をキャッチして、「ワハハハハ」や「ふふふっ」、または任意のwavファイルを鳴らせるようにしています。
これがウリといえばウリの機能です。無言勢でも楽しんでいることは仲間に伝えたい、そんな思いで作っています。
苦労した点
ChatGPT君が手伝ってくれて、この3年くらいは随分楽になりました。
自分がまさか今どきJavaでワンパッケージ作れるとは。新入社員の頃以来でしたから・・JAVA。
ChatGPTがすべて調べてくれて直してくれて、、API仕様書とにらめっこは過去の作業ですね。
長時間使っていてどんどん重くなっていく、というのもない感じで、気配り関連もばっちりかと思います。
いまどき今後はリターン開発者も増えていくのかも?しれません。
すごい時代になりました。
ソース公開することで少しはOSS文化に寄与できているのかな?分からないけれど、文化を守っていきたいですね。
