初めに
新しいTTSの前処理のライブラリがでていたので、試してみます
開発環境
- uv
- window 11
- python 3.21
環境構築
まずはuvを使って環境構築をします
uv venv --python 3.12 .venv\Scripts\activate
必要なライブラリをインストールします
uv pip install -r requirements.txt
次に処理にyomikataを使っているので、必要なモデルをダウンロードします
uv run python -m yomikata download
日本語文章でg2pを実行
動く環境ができたので、以下のようなサンプルスクリプトを使って実際に日本語の文章で実行してみます
import kabosu_core def display_phonemes(text: str): """音素列を表示""" print(f"\n■ 入力テキスト: {text}") print("-" * 60) # 音素列を取得 phonemes = kabosu_core.g2p(text, kana=False) print(f"【音素列】") print(f" {phonemes}") # 音素をリスト形式でも表示 phoneme_list = phonemes.split() print(f"\n【音素リスト】 (合計 {len(phoneme_list)} 音素)") print(f" {phoneme_list}") return phonemes def display_kana(text: str): """カナ表記を表示""" print(f"\n■ 入力テキスト: {text}") print("-" * 60) # カナ表記を取得 kana = kabosu_core.g2p(text, kana=True) print(f"【カナ表記】") print(f" {kana}") return kana def main(): """メイン関数""" import sys if len(sys.argv) <= 1: print("エラー: テキストを指定してください") print("\n使用方法: python demo_g2p.py \"変換したいテキスト\"") print("\n例:") print(" python demo_g2p.py \"こんにちは、今日は良い天気ですね\"") sys.exit(1) # コマンドライン引数からテキストを取得 text = " ".join(sys.argv[1:]) display_kana(text) display_phonemes(text) if __name__ == "__main__": main()
実行は以下のようにします
uv run python demo_g2p.py "こんにちは、今日は良い天気ですね"
実行結果は以下のようになります
[09/18/25 21:48:16] INFO Running on cpu dbert.py:41 INFO Loaded model from directory C:\Users\yuta\Desktop\Private\kabosu-core\.venv\Lib\site-packages\yomikata\dbert-artifacts dbert.py:124 ■ 入力テキスト: こんにちは、今日は良い天気ですね ------------------------------------------------------------ 【カナ表記】 コンニチハ、キョウハヨイテンキデスネ ■ 入力テキスト: こんにちは、今日は良い天気ですね ------------------------------------------------------------ 【音素列】 k o N n i ch i w a pau ky o u w a y o i t e N k i d e s U n e 【音素リスト】 (合計 29 音素) ['k', 'o', 'N', 'n', 'i', 'ch', 'i', 'w', 'a', 'pau', 'ky', 'o', 'u', 'w', 'a', 'y', 'o', 'i', 't', 'e', 'N', 'k', 'i', 'd', 'e', 's', 'U', 'n', 'e']