doubao-tts について
OpenMontageの音声生成ワークフロー向けDoubao TTSスキルガイドです。音声やAPIの設定、音声ファイルとタイミング情報の取得に加え、長尺ナレーションの非同期処理と字幕作成を扱います。
主な機能
- 01DoubaoのAPIキーと音声の設定
- 02音声生成とファイル保存
- 03文・単語単位のタイミング取得
- 04長尺ナレーション向け非同期API
- 05字幕作成とトラブル対応の案内
活用シーン
- 01動画用の中国語ナレーション生成
- 02音声と読み上げ速度の試聴・確認
- 03音声のタイミング情報に基づく字幕作成
- 04認証、クォータ、タイミングの問題調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ calesthio/ openmontage --skill doubao-ttsインストール後、Claude Code で/doubao-ttsを入力して読み込まれたか確認します。
詳細
Doubao TTS
.env に DOUBAO_SPEECH_API_KEY が必要です。
デフォルトの音声を設定するには DOUBAO_SPEECH_VOICE_TYPE を設定するか、ツールに voice_id を渡します。
現在の API
新しいコンソールの API キー認証フローを使用します。
X-Api-Key: ${DOUBAO_SPEECH_API_KEY}
X-Api-Resource-Id: seed-tts-2.0
新しいコンソールの API キーでは、X-Api-App-Id と X-Api-Access-Key を使用しないでください。API が load grant: requested grant not found を返す場合は、キーの種類または認証ヘッダーが間違っている可能性があります。
長尺動画のナレーションには、非同期エンドポイントを使用してください。
POST https://openspeech.bytedance.com/api/v3/tts/submit
POST https://openspeech.bytedance.com/api/v3/tts/query
これにより、字幕の作成に使用できるタイミングメタデータ sentences[].words[] と audio_url が返されます。
OpenMontage の使用方法
TTS セレクターを使って生成します。
from tools.audio.tts_selector import TTSSelector
result = TTSSelector().execute({
"preferred_provider": "doubao",
"text": "如果 AI 真的会改变未来,普通人到底该怎么参与?",
"voice_id": "zh_female_vv_uranus_bigtts",
"output_path": "projects/my-video/assets/audio/narration.mp3",
"speech_rate": 0,
"enable_timestamp": True,
})
または、プロバイダーを直接呼び出します。
from tools.audio.doubao_tts import DoubaoTTS
result = DoubaoTTS().execute({
"text": "短样本试听文本。",
"voice_id": "zh_female_vv_uranus_bigtts",
"output_path": "projects/my-video/assets/audio/doubao_sample.mp3",
})
プロバイダーが以下を出力します。
output_path:ダウンロードした音声ファイルmetadata_path:クエリ応答全体の JSON。デフォルトは<output_path>.json
推奨ワークフロー
- 有料のナレーション全体を生成する前に、10~15 秒のサンプルを生成します。
- 音声の自然さ、アクセント、速度について、ユーザーの承認を得ます。
- 承認を得てから、ナレーション全体を生成します。
- クエリ JSON を保持します。字幕のタイミングを判断するための正確な情報源です。
- 推定したテキストの長さではなく、
sentences[].words[]を使ってキャプションを作成します。 - タイムスタンプを適用する前に、中国語の意味上のフレーズごとにキャプションをまとめます。固定文字数だけで区切らないでください。「在不押单个公司的情况下」や「可能会被慢慢稀释」のようなフレーズが分断され、理解しづらくなるおそれがあります。
- ユーザーが以前の尺に合わせるよう明示的に求めない限り、承認された音声のリズムに合わせて動画の長さを決めます。
パラメーター
voice_id:Doubao のspeaker/音声タイプです。デフォルトはDOUBAO_SPEECH_VOICE_TYPEです。resource_id:Doubao Speech 2.0 の音声にはseed-tts-2.0を使用します。speech_rate:0は通常速度、100は 2 倍速、-50は 0.5 倍速です。sample_rate:デフォルトは24000です。enable_timestamp:デフォルトはtrueです。return_usage:デフォルトはtrueです。利用可能な場合、使用量メタデータを要求します。
デフォルトでは additions.explicit_language を渡さないでください。エンドポイントとキーの組み合わせによっては、zh-cn が unsupported additions explicit language zh-cn で拒否されることがあります。
落ち着いた中国語の解説音声には、まず speech_rate: 0 を使用します。承認された形式に対して結果が長すぎる場合は、ナレーション全体を再生成する前に、speech_rate: 25 または 50 で短い比較用サンプルを作成します。ユーザーが Doubao の自然なペースを好む場合、以前のプロバイダーの尺に合わせるためだけに速度を上げないでください。
トラブルシューティング
load grant: requested grant not found:キーの種類または認証ヘッダーが間違っています。新しいコンソールの API キーにはX-Api-Keyを使用してください。speaker permission denied:音声 ID が間違っているか、選択したリソースでその音声の使用が許可されていません。quota exceeded:クォータ、累計文字数、または同時実行数が上限を超えています。- タイムスタンプがない:
enable_timestamp: trueを確認し、クエリ JSON を保持して、選択したエンドポイントがsentencesを返したことを確認します。
安全性
API キーをログ、メタデータ、パッチ、プロジェクト成果物に出力または書き込まないでください。.env.example には、値が空の変数名のみを記載してください。