はじめに
Irodori-TTS でポッドキャスト風番組を作ってみる。Irodori OpenAI TTS Server を使う。
環境
- Ubuntu 22.04 LTS
- Intel Core i9-14900K、メモリ 32GB
- NVIDIA GeForce RTX 4090 (24GB)
Irodori OpenAI TTS Serverのセットアップは済んでいるものとする。
AI ポッドキャスト生成器を作る
AI ポッドキャスト生成器を作った。Pi + LM Studio(Muse Glimmer)使用。
欲しい機能
- 2人のキャラクターが掛け合う番組を作る
- 2人のキャラクターのそれぞれの参照音声名をユーザーが指定する
- シナリオはテキストでユーザーが渡す
- YAMLで使いやすいフォーマットを設計してほしい
- その書式に基づいてシナリオを生成するSKILL.mdもほしい
- 最終的にひとつのwavファイルとしてほしい。
- CLIで引数に入力ファイル名と出力ファイル名を渡して実行
- 並列処理はしない
使うツール
- Python
- Irodori OpenAI TTS Server
入力フォーマット
scenario.yaml
title: "朝の挨拶"
characters:
- id: host
name: "ホスト"
voice: "voice_host_ref"
speed: 1.2
- id: guest
name: "ゲスト"
voice: "voice_guest_ref"
speed: 1.4
scenes:
- speaker: host
text: "おはようございます、今日も元気にいきましょう。"
- speaker: guest
text: "おはよう!昨日はよく眠れました。"
- speaker: host
text: "それはよかったですね。"
スキルも用意した。
ポッドキャスト風番組を作ってみる
まず、シナリオを作る。Pi + LM Studio(Qwen3.8 27B)使用。
>tough_thinking.mdをベースにして「にゃんこ情報局」という10分以内の音声番組を作って。キャラはホストで聞き役の好奇心旺盛で元気な三毛猫「ミケ」と、ゲストで解説役の賢くて冷静でやさしく人に教えてくれるのんびり屋な黒猫「クロ」です
nyanko_info.yaml
title: "にゃんこ情報局 ~AI時代、まだ考える?~"
characters:
- id: mike
name: "ミケ"
voice: "voice_host_ref"
speed: 1.2
- id: kuro
name: "クロ"
voice: "voice_guest_ref"
speed: 1.3
scenes:
- speaker: mike
text: "にゃー、お待たせにゃ~!「にゃんこ情報局」へようこそにゃ!今日はちょっと難しい話題を取り上げるにゃー。"
- speaker: kuro
text: "にゃー、やあミケ。今日は「AI時代、にゃんこは考える必要あるの?」て話をしようかにゃ。"
Irodori-TTS-Server/voicesに利用する参照音声(ここではvoice_host_ref.wavとvoice_guest_ref.wav)を入れておく。
作成
$ uv run gencast.py -i nyanko_info.yaml -o nyanko_info.wav --chunk-silence-ms 300
--silence-msと--chunk-silence-msでそれぞれキャラクターのセリフ同士との間とセリフのチャンク間の無音時間を設定できる。
chunk_min_charsの値をどうすべきかという問題があって、最初1に設定していたが、参照音声によってはブチブチ切れたような音がするときがあるので、これを10にして軽減した。場合によってはこれをいじる必要があるかもしれない。
|