はじめに
こんにちは、しゅんです。
今回は、Hugging Face で提供されている最先端の TTS (Text-to-Speech) モデル Kokoro-82M について紹介します。
現在、公式の Hugging Face スペース では体験版のみが公開されており、日本語対応についての仕様はまだ正式に公開されていません。v0.23 で日本語対応の計画が発表されましたが、現時点ではモデルのダウンロードや日本語の利用はできません。
Kokoro-82M とは?
Kokoro-82M は、わずか 82Mパラメータ で高品質なTTSを実現するモデルで、以下の特徴があります:
- 軽量で高精度:従来のTTSモデルと比較して、少ないデータとパラメータで高い性能を発揮。
- オープンソース:Apache 2.0 ライセンスのもとで公開。
- 英語の対応:アメリカ英語、イギリス英語をサポート。
日本語対応の現状
現在、Kokoro v0.23 は以下の制限が存在します:
- 日本語対応の正式リリースは未定。
- Hugging Face のデモスペースのみで日本語の試験的対応が提供されている。
- CJK(中国語、日本語、韓国語)のトークナイザーは英字を適切に処理できないため、英字の削除が必要。
公式の発表によると、日本語対応モデルの正式リリース時期はまだ未定です。
環境構築手順
自分の環境
- OS: Ubuntu 24.04
- GPU: RTX3080LAPTOP(CUDA対応推奨)
1. 手順(英語モデルのみ対応)
# 仮想環境の作成と有効化
python3 -m venv .venv
source .venv/bin/activate
# Git LFSのインストールとリポジトリのクローン
git lfs install
git clone https://huggingface.co/hexgrad/Kokoro-82M
cd Kokoro-82M
# 依存ライブラリのインストール
sudo apt -qq -y install espeak-ng > /dev/null 2>&1
pip install -q phonemizer torch transformers scipy munch
# オーディオ再生用のツール
sudo apt update
sudo apt install sox
2. Pythonスクリプトの作成(英語用)
以下の内容で test.py
を作成します:
import torch
import soundfile as sf
from models import build_model
from kokoimport torch
import soundfile as sf
from models import build_model
from kokoro import generate
# デバイスの設定 (CUDA or CPU)
device = 'cuda' if torch.cuda.is_available() else 'cpu'
# 2️⃣ モデルの構築とボイスパックの読み込み
MODEL = build_model('kokoro-v0_19.pth', device)
VOICE_NAME = [
'af', # デフォルトのボイス (Bella & Sarah の50-50)
'af_bella', 'af_sarah', 'am_adam', 'am_michael',
'bf_emma', 'bf_isabella', 'bm_george', 'bm_lewis',
'af_nicole', 'af_sky',
][0]
VOICEPACK = torch.load(f'voices/{VOICE_NAME}.pt', weights_only=True).to(device)
print(f'Loaded voice: {VOICE_NAME}')
# 3️⃣ 音声生成の実行
text = "Hello, my name is Syun. I am a 25-year-old Taiwanese. Let me say this first—I’m quite a strange person. I transitioned from electrical and electronics to AI. Currently planning an RPG game and involved in AI and robotics. I have strong biases and a wide range of hobbies. Nice to meet you!"
audio, out_ps = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0])
# 言語は VOICE_NAME の最初の文字に基づいて決定
# 🇺🇸 'a' => American English => en-us
# 🇬🇧 'b' => British English => en-gb
# 4️⃣ 生成された音声の保存と再生
output_audio_path = "output_audio.wav"
sf.write(output_audio_path, audio, 24000)
print("Audio saved as 'output_audio.wav'")
# 音声ファイルを再生 (Windows/macOS/Linux 対応)
import os
if os.name == 'nt': # Windows
os.system(f'start {output_audio_path}')
elif os.uname().sysname == 'Darwin': # macOS
os.system(f'afplay {output_audio_path}')
else: # Linux
os.system(f'play {output_audio_path}')
# 生成された音素の表示
print("Phonemes used in the generation:")
print(out_ps)
print(text)
3. スクリプトの実行
python3 test.py
まとめ
Kokoro-82M は、将来的に多言語対応が期待される TTS モデルですが、現在日本語は利用できず、正式なリリース待ちの状態です。
Hugging Face のデモスペースを通じて、日本語の試験的な音声合成を試すことができますが、モデルのダウンロードは未対応です。今後のアップデートを待ちましょう。
動作
Kokoro-82Mを使って自己紹介しました pic.twitter.com/Vp5W2e60Mj
— SYUN@色々と頑張ってます (@syun88AI) January 20, 2025
参考リンク
最後までお読みいただきありがとうございました!