mcpField
D
doubao-tts

doubao-tts

github.com/calesthioクリエイティブ・メディア72.7k1.1k 回インストール今日更新
リポジトリ

doubao-tts について

OpenMontageの音声生成ワークフロー向けDoubao TTSスキルガイドです。音声やAPIの設定、音声ファイルとタイミング情報の取得に加え、長尺ナレーションの非同期処理と字幕作成を扱います。

主な機能

  1. 01DoubaoのAPIキーと音声の設定
  2. 02音声生成とファイル保存
  3. 03文・単語単位のタイミング取得
  4. 04長尺ナレーション向け非同期API
  5. 05字幕作成とトラブル対応の案内

活用シーン

  1. 01動画用の中国語ナレーション生成
  2. 02音声と読み上げ速度の試聴・確認
  3. 03音声のタイミング情報に基づく字幕作成
  4. 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

推奨ワークフロー

  1. 有料のナレーション全体を生成する前に、10~15 秒のサンプルを生成します。
  2. 音声の自然さ、アクセント、速度について、ユーザーの承認を得ます。
  3. 承認を得てから、ナレーション全体を生成します。
  4. クエリ JSON を保持します。字幕のタイミングを判断するための正確な情報源です。
  5. 推定したテキストの長さではなく、sentences[].words[] を使ってキャプションを作成します。
  6. タイムスタンプを適用する前に、中国語の意味上のフレーズごとにキャプションをまとめます。固定文字数だけで区切らないでください。「在不押单个公司的情况下」や「可能会被慢慢稀释」のようなフレーズが分断され、理解しづらくなるおそれがあります。
  7. ユーザーが以前の尺に合わせるよう明示的に求めない限り、承認された音声のリズムに合わせて動画の長さを決めます。

パラメーター

  • 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 には、値が空の変数名のみを記載してください。

コメント