見出し画像

(マジの)ご家庭にジャービス。完全 Macのみで日本語音声応答するAIを作った

Speech-to-speechは、NVIDIAのGPU搭載マシンがあればローカルで音声認識、応答生成、音声合成ができる画期的なオープンソースツールだった。

しかし一つだけ不満があったのは、これが日本語には対応していないということだ。

ワイはコスモポリタンである。
・・・そう名乗ってしまったから、「そういえばコスモポリタンってなんだろう」と思ってClaude-3に聞いてみた。

コスモポリタンは以下のような意味や用法があります:
1.飲み物としてのコスモポリタン:
ウォッカ、クランベリージュース、ライムジュース、トリプルセックを使ったカクテル
1980年代後半に人気が出て、特に映画やテレビドラマの影響で広く知られるようになりました
2.思想・概念としてのコスモポリタン:
世界市民主義、国際主義を表す言葉
国境や文化の違いを超えて、世界中の人々と交流し、理解し合うという考え方
狭い地域や国家の枠にとらわれず、開かれた国際的な視野を持つ人を指す場合もあります
3.形容詞としての用法:
国際色豊かな、洗練された、都会的なという意味で使われます
例: コスモポリタンな雰囲気の街、コスモポリタンなライフスタイル

これらの意味のうち、特に詳しく知りたい点がありましたら、お聞かせください。

そう、当然、飲み物ではなく、世界市民主義、国際主義を意味するコスモポリタンだ。

英語の受け答えはそれほど苦痛にならない。ただ、英語と日本語が混じると途端に頭が混乱してくる。

日本人相手に日本語で話をするときは、英語のことは極力忘れたい。特に文法みたいなのものについては。

だからSpeech-to-speechも、「あー使えるね」という感覚ではあったが、「これ毎日使おう」とまでは思わなかった。まあもうちょっとで使えるかな、という感じではあった。

しかし音声での応答は非常に魅力的だ。僕がAlexaが大好きな理由でもある。
なんせ楽なのだ。

僕ほどキーボードを打つのが苦にならない、それどころかキーボードを打つのが喜びであるような人間にとってさえ、キータイプよりもオーラルが楽なことはしばしばあるのだ。

speech-to-speechを少し改造すればなんとかなるかと思ったが、全然なんとかならなかった。そのうち、Speech-to-speechでMacだけで動くスタンドアロンなやつが出てきて、これを改造すれば完全スタンドアローンな音声応答AIが作れるのではないかと思って踏み込むことにした。久々に徹夜したぜ。

日本語のリアルタイム音声入力にはReazonSpeechを使い、音声出力にはとりあえずMeloTTSを使った。しかし、音声出力はもっとマシな方法があると思う(sayコマンドとかずんだもんとか)。今回は元の実装をある程度尊重した。

推論の本体はmlx-community/Llama-3-Swallow-8B-Instruct-v0.1-8bitを使用。8ビットでもまあまあちゃんと受け答えしてくれる。

こんな感じで動く

実際のソースコードは以下

インストール系のデバッグには、necobit ( https://github.com/necobit )さんが協力してくれた。

僕の手元のはMacBook Pro M2 /32GBだが、necobitさんの MacBook Air M1 /16GBでも(推論は遅いけど)動いたので改造すればリアルタイムでいけると思う。

特にnecobitさんはよくメイカーフェアとかでデモしてるので、完全オフラインで動くAIには興味があるようだった。

これで大ご家庭用AI時代が到来するかも!?