音声合成マークアップ言語を使用する
Azure Speech SDK を使用すると、音声に合成するプレーン テキストを送信できますが、このサービスでは、生成する音声の特性を記述するための 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 つの異なるニューラル音声間の音声ダイアログを指定します。
- アリアナ (明るく): "私はトマトだと言うのよ。
- Guy:"I say tomato (pronounced tom-ah-toe) ...Let's call the whole thing off!"
SSML の説明を Speech サービスに送信するには、次のように SpeechSynthesizer オブジェクトの適切なメソッドを使用できます。
speech_synthesizer.speak_ssml('<speak>...');
SSML の詳細については、 Azure Speech SDK のドキュメントを参照してください。