1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kokoro-82M TTS導入しました

Last updated at Posted at 2025-01-20

はじめに

こんにちは、しゅんです。

今回は、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 のデモスペースを通じて、日本語の試験的な音声合成を試すことができますが、モデルのダウンロードは未対応です。今後のアップデートを待ちましょう。

動作

参考リンク


最後までお読みいただきありがとうございました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?