AI・機械学習
Kokoroによるローカル、CPUフレンドリー、高品質なTTS(テキスト読み上げ)
Local, CPU-Friendly, High-Quality TTS (Text-to-Speech) with Kokoro (ariya.io)
要約
この記事では、ローカル環境で動作し、CPUのみで高品質な音声合成を実現するKokoroというモデルを紹介しています。プライバシーを保護しつつ、8200万パラメータで多言語対応、約50種類の音声を提供します。Dockerコンテナでの簡単なセットアップ方法や、OpenAI互換APIへの対応、そしてCPUでの合成速度についても解説しています。
全文翻訳
Kokoroによるローカル、CPUフレンドリー、高品質なTTS(テキスト読み上げ)
数年前までは、リアルなローカル音声生成は想像もつかないことでした。今日、その品質は驚くほど高く、そして最も重要なことに、プライバシーを犠牲にすることなくこれらの結果をもたらします。
上記のビデオは、以前のGTX 1080 Ti for Local LLMの記事で議論したローカルマシン上で完全に実行されたサンプルテキストから生成されたオーディオを示しています。このマシンには専用GPUがありますが、GPUはLLM推論専用に完全に予約されており、音声合成はCPUのみで実行されています。
使用されているモデルはKokoroで、わずか8200万パラメータでありながら、英語、中国語、ヒンディー語を含む複数の言語でリアルな音声を生成します。主に英語向けに最適化された約50種類の異なる音声を提供します。
Kokoroのサーバーをセットアップするにはいくつかの方法があります。最も簡単な方法は、事前にダウンロードされた音声モデルを含むKokoro-FastAPIという名前の事前作成済みコンテナイメージを使用することです。そのため、コンテナイメージは約5GBとかなり大きいです。
DockerまたはPodmanを使用してコンテナを起動するには、次のコマンドを使用します。
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
正しく実行されていることを迅速に確認するには、コンテナはlocalhost:8880/webでシンプルなWeb UIを提供します。ここで、テキストを入力してオーディオを生成(および自動再生)できます。
シンプルなWeb UIに加えて、このコンテナはOpenAI音声APIと互換性のあるTTSインターフェースも提供しており、OpenAI音声APIを既に利用している既存のプログラムを簡単に適応させることができます。
迅速なテストを容易にするために、JavaScriptとPythonの両方でサンプルコードがgithub.com/remotebrowser/speakで利用可能です。このリポジトリをクローンすると、後続のデモンストレーションに従うことができます。
JavaScriptの場合:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.js "Good morning! How are you today?"
Pythonの場合、コマンドは非常に似ています。
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.py "Good morning! How are you today?"
生成されたオーディオはMP3ファイルとして保存されます。SoXまたはSound eXchange(詳細はsox.sf.netを参照)がマシンにインストールされている場合、オーディオは自動的に再生されます。
TTS_VOICE環境変数を設定することで、別の音声を選択することもできます。
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
export TTS_VOICE="am_eric"
./speak.js "Good morning! How are you today?"
利用可能な音声の完全なリストは、公式のKokoroプロジェクトページで見つけることができます:huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md。
合成速度はどれくらいですか?短いテスト段落でam_eric音声を使用した測定結果を以下に示します。
Jupiter is the largest and most massive planet in our solar system. This gas giant, made mostly of hydrogen and helium, is known for its Great Red Spot—a massive storm observed for centuries.
以下のリストは、さまざまなCPUでの生成時間(3回の実行のベスト)をまとめたものです。
Intel Core i7-4770K: 4.7秒
Apple M2 Pro: 4.5秒
AMD Ryzen 7 8745HS: 1.5秒
リストの最初のCPUは12年前にリリースされました。その古いCPUでも問題なく動作するなら、これが非常に有能なTTSシステムであることがわかります。
最後に、代替のOpenAI互換コンテナ化TTSサービスとして、Speaches (speaches.ai) を検討してください。Kokoro-FastAPIとは異なり、Speachesはコンテナイメージにバンドルされていないため、API経由で音声ウェイトを明示的にダウンロードする必要があります。ただし、Speachesは、OpenAIで有名な高品質なSpeech-to-Text(STT)システムであるWhisperを含んでいるという利点を提供します。アプリケーションがTTSとSTTの両方の機能が必要な場合、Speachesがワンストップソリューションになる可能性があります。
ローカルLLMと組み合わせると、このような音声合成システムにより、読み取る代わりにLLMの回答を聞くことができます!
注:この記事は元々Remote Browser Substackに掲載されました。