音声合成マークアップ言語を使用する

完了

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 のドキュメントを参照してください。