発話を制御する(SSMLを利用する)
音声合成マークアップ言語(Speech Synthesis Markup Language / SSML)を利用すれば、よりデジタルヒューマンの声色や発声を制御する事が出来ます。
SSML は、XML ベースのマークアップ言語であり、これにより、開発者はデジタルヒューマンのTTS(Text-to-Speech)を使用して、入力テキストを合成音声に変換する方法を指定することができます。
プレーンテキストと比較して、SSML では、開発者が音声合成出力のピッチ、読み方、読み上げ速度、音量などを微調整できます。 通常の句読点は、ピリオドの後の一時停止、または文が疑問符で終わるときの正しいイントネーションの使用など、自動的に処理されます。
すべてのTTSプロバイダが、すべてのSSMLをサポートしているわけではなく、ほとんどのプロバイダはSSML仕様で定義されているタグの”サブセット”しかサポートしていません。TTSプロバイダのSSMLガイドラインに従って設定してください。
各社のSSML仕様ページ
Azure Text to Speech | |
Google Text-to-Speech | |
Amazon Poly | |
NAVER CLOVA Voice | 未対応 |
Watson Text to Speech | |
CoeFont | 未対応 |
AITalk | |
ReadSpeaker | 一部対応(管理画面ログイン後にドキュメントがあります) |
SSMLを使用している場合は、<speak>タグの中にビヘイビアタグが含まれていることを確認する必要があります。
<speak> <uneeq:happy>Good morning! What can I help you with today?</uneeq:happy> </speak>
<uneeq:behavior>タグと、TTSプロバイダがサポートしているSSMLタグと組み合わせることで、デジタルヒューマンの行動や発話に複数の効果を適用することができます。
Google TTSを使用する場合
Google TTSを使用している場合、<uneeq:behavior>タグが他のSSMLタグの中に入れ子になっていないことを確認してください。さらに、<uneeq:behavior>タグは、<speak>タグの後ろに入れることが必要です。
Google TTSを使ったSSMLの正しい使い方 <speak> <uneeq:excited> <prosody rate="high" pitch="+2st">This is how I speak when I’m excited!</prosody> </uneeq:excited> <uneeq:happy> <s>This is how I speak when I’m happy.</s> </uneeq:happy> </speak>
Google TTSを使ったSSMLの間違った使い方 <speak> <s> <uneeq:excited>This is how I speak when I’m excited!</uneeq:excited> </s> <s> <uneeq:happy>This is how I speak when I’m happy.</uneeq:happy> </s> </speak>
Azure TTSを使用する場合
SynAnimを動かすためにはAzure TTSを利用する必要があります。Azure TTSを利用する婆は下記の様に設定するとSSMLが利用できます。
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="ja-JP"> <voice name="ja-JP-NanamiNeural"> <prosody rate="-50%">This is <break time="650ms" />すごいですね! </prosody> </voice> </speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="ja-JP"> <voice name="ja-JP-NanamiNeural"> <prosody rate="10%">
その他のTTSプロバイダー
Google TTSを使ったSSMLとは違った使い方が必要な場合があります。
正しい使い方 例1 <speak> <amazon:domain name="conversational"> <uneeq:excited>This is how I speak when I’m excited!</uneeq:excited> <uneeq:happy>This is how I speak when I’m happy</uneeq:happy> </amazon:domain> </speak>
正しい使い方 例2 <speak> <s> <uneeq:excited>This is how I speak when I’m excited!</uneeq:excited> </s> <s> <uneeq:happy>This is how I speak when I’m happy.</uneeq:happy> </s> </speak>
最終更新日 June 17, 2023