音声合成マークアップ言語を使用する
Azure AI 音声 SDK を使用して、プレーンテキストを送信して音声に合成できます (たとえば、SpeakTextAsync() メソッドを使用する) が、このサービスは、生成する音声の特性を記述するための XML ベースの構文もサポートしています。 この音声合成マークアップ言語 (SSML) の構文を使用すると、音声出力をより細かく制御し、次のことができます。
- ニューラル音声を使用する場合、"弾んでいる" や "元気のいい" などの話し方を指定します。
- 一時停止または無音を挿入します。
- たとえば、"SQL "というテキストを "シークェル" と発音するというように、"音素" (音声学上の発音) を指定します。
- 音声の "韻律" を調整します (ピッチ、音色、および読み上げ速度に影響します)。
- 一般的な "say-as" 規則を使用します。たとえば、特定の文字列を日付、時刻、電話番号、またはその他の形式で表現するように指定します。
- 録音された音声またはオーディオを挿入します。たとえば、標準の録音メッセージを含めたり、背景雑音をシミュレートしたりします。
たとえば、次の SSML を考えてみましょう。
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-AriaNeural">
<mstts:express-as style="cheerful">
I say tomato
</mstts:express-as>
</voice>
<voice name="en-US-GuyNeural">
I say <phoneme alphabet="sapi" ph="t ao m ae t ow"> tomato </phoneme>.
<break strength="weak"/>Lets call the whole thing off!
</voice>
</speak>
この SSML では、次のように、2 つの異なるニューラル音声間の会話を指定しています。
- Ariana ("元気よく"): "トマトの発音はトメイトウでしょう。"
- 男: "トマートウだろう ("ト マー トウ" の "マー" にアクセントを置く) ... Let's Call the Whole Thing Off の歌のように、もう終わりにしよう。"
SSML の説明を音声サービスに送信するには、次のように SpeakSsmlAsync() メソッドを使用できます。
speechSynthesizer.SpeakSsmlAsync(ssml_string);
SSML の詳細については、Azure AI 音声 SDK のドキュメントを参照してください。