azure-text-to-speech について
OpenMontageでAzureのニューラル音声合成を使い、ナレーションを作成するスキルです。音声選択、韻律制御、設定、セグメント単位の利用方法を扱い、Piperを既定のオフライン経路およびフォールバックとして説明しています。
主な機能
- 01Azureニューラル音声合成
- 02多言語音声の選択
- 03速度・ピッチ・スタイル制御
- 04MP3またはWAV出力
- 05同期REST生成
活用シーン
- 01動画セクション用のナレーション作成
- 02多言語テキストに合う音声の選択
- 03ナレーションの速度やスタイル調整
- 04個別の音声セグメントの再生成
MCP 対応
OpenMontageは`azure_tts`ツールでAzure TTSを提供し、`tts_selector`から検出できます。任意で利用するクラウドTTSプロバイダーです。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ calesthio/ openmontage --skill azure-text-to-speechインストール後、Claude Code で/azure-text-to-speechを入力して読み込まれたか確認します。
詳細
Azure AI Speech — テキスト読み上げ
Azure のニューラル TTSでナレーションを生成します。高品質な多言語音声、SSML によるプロソディ制御、express-as スタイルに対応し、REST の /cognitiveservices/v1 エンドポイントから同期的に提供されます(トークン交換、Blob ストレージ、ジョブのポーリングは不要です)。OpenMontage では、これは azure_tts ツール(capability=tts、provider=azure)として利用できます。オプションのクラウド TTS プロバイダーです。AZURE_SPEECH_KEY が設定されている場合は、高品質なクラウドナレーションに優先して使用してください。ローカルの piper_tts は引き続きデフォルトのオフライン経路であり、Azure を利用できない場合のフォールバックです。ボイスクローニングには引き続き elevenlabs_tts を使用します。
ドキュメント:REST テキスト読み上げ · 音声ギャラリー
セットアップ
azure_stt と同じ Speech リソースを使用します。1 つのキーとリージョンで、STT と TTS の両方を利用できます。Azure portal で Speech リソースを作成し、その Keys and Endpoint ページからキーとリージョンをコピーしてください。
export AZURE_SPEECH_KEY=your_speech_resource_key
export AZURE_SPEECH_REGION=eastus # your resource's region
# export AZURE_TTS_ENDPOINT=https://... # optional: full custom TTS host
# (the TTS host is https://<region>.tts.speech.microsoft.com — a different
# subdomain than the STT endpoint, hence the separate override var)
AZURE_SPEECH_KEY と、AZURE_SPEECH_REGION または AZURE_TTS_ENDPOINT のいずれかが設定されると、azure_tts は AVAILABLE と報告します。
パイプラインでの使用
通常どおり tts_selector 経由でルーティングしてください(azure_tts は自動検出されます)。または、ユーザーが Azure の使用を承認している場合は、プロバイダーツールを直接呼び出してください。
from tools.tool_registry import registry
registry.discover()
tts = registry._tools["azure_tts"]
result = tts.execute({
"text": "Every design decision in this dashboard has a reason.",
"voice": "andrew", # alias or full Azure short name
"rate": "-4%", # slightly slower for narration
# "style": "narration-professional", # for voices that support styles
"output_path": "projects/my-video/assets/audio/seg_001.mp3",
"output_format": "mp3", # or "wav" (48kHz PCM) for mixing
})
azure_tts が利用できない(キーがない)場合やエラーが発生した場合は、宣言されたチェーンに従ってフォールバックしてください:elevenlabs_tts → openai_tts → piper_tts。
音声の選択
厳選した候補リスト(voice パラメーターでエイリアスを指定できます):
| エイリアス | 音声 | 特徴 |
|---|---|---|
andrew | en-US-AndrewMultilingualNeural | 温かく、自信にあふれ、会話的 — デフォルト。創業者や解説者向けの語り口 |
brandon | en-US-BrandonMultilingualNeural | 低めで、落ち着いた語り口 |
ava | en-US-AvaMultilingualNeural | 自信にあふれた、明るい女性の声 |
guy | en-US-GuyNeural | 説得力のある語り口 |
jenny | en-US-JennyNeural | 親しみやすく、明瞭 |
有効な Azure 音声のショートネームは、そのまま指定できます(例:de-DE-KatjaNeural)。Multilingual 音声は英語以外のテキストにも適しています。SSML を正しく適用するため、テキストの言語に合わせて locale を設定してください。
重要なパラメーター
rate/pitch— SSML のプロソディです。ナレーションは少し速度を落とす("-4%"から"-8%")と、通常は最も聞きやすくなります。音声の調整が必要な場合を除き、ピッチは"0%"のままにしてください。style— 対応する音声で使用できる express-as スタイルです(narration-professional、calm、newscast)。Azure は未対応のスタイルを無視するため、一括処理の前にサンプルを聴いてください。output_format— 納品にはmp3(48kHz/192kbit)、後続処理のためにセグメントをaudio_mixerに渡す場合はwav(48kHz PCM)を使用します。- 決定性:音声と SSML を固定すると、再生成した音声は実質的に同一になります。セット全体を録り直さずに、個々のセグメントを安全に再生成できます。
コスト
Azure ニューラル TTS の Standard レベルは、およそ 100 万文字あたり $16(約 1,000 文字あたり $0.016、150 語のナレーションセグメントで約 $0.015)です。ツールはコストトラッカー用に、呼び出しごとの cost_usd を報告します。最新の料金については、Azure AI Speech の料金を参照してください。
制限とヒント
executeの呼び出し 1 回につき、ナレーションセグメントは 1 つです。1 つの長大な段落にまとめるのではなく、(アセット段階の慣例に従って)スクリプトのセクションごとに生成してください。小さなセグメントはシーンのタイミングにきれいに合わせられ、再生成のコストも低くなります。- 同期エンドポイントのリクエスト上限は音声 10 分です。これは、OpenMontage が生成するどのセグメントよりもはるかに長い時間です。
- テキストは自動的に XML エスケープされます。事前にエスケープしたり、SSML で囲んだりしないでください。プレーンテキストと
rate/pitch/styleパラメーターを渡してください。 - 品質を確認するには、スクリプト全体を一括処理する前に、最初に生成したセグメントを聴いてください(音声やスタイルが適切かどうかは創作上の判断です。Decision Communication Contract に従って、提案段階で明示してください)。