kabosu-coreを使って日本語の文章でg2p処理をする

初めに

新しいTTSの前処理のライブラリがでていたので、試してみます

github.com

開発環境

環境構築

まずは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']