概要
Pollyを遊びで使ったので、SSMLの概要について簡単にまとめてみる
基本的なSSMLタグの使い方
SSMLを使うにはAPIを呼び出すタイミングでSSML形式であることを指定する必要があります。
詳細は適当な公式記事を参照してください。
SSMLタグを使う際は、まず<speak>
タグで対象のテキストを囲む必要があります。これにより、音声合成エンジンがSSMLタグを認識できるようになります。
<speak>
これは、SSMLタグを使った音声合成の例です。
</speak>
次に、<break>
タグを使って適切な箇所に一時停止を挿入し、聞きやすさを向上させましょう。
<speak>
私は、山田太郎です。<break time="500ms"/>東京都出身の25歳で、現在はシステムエンジニアとして働いています。
</speak>
また、<p>
タグと<s>
タグを使って段落や文章間の切れ目を作ることで、より理解しやすい音声を生成できます。
<speak>
<p>
<s>今日は、音声合成について話します。</s>
<s>音声合成とは、テキストから人工的な音声を生成する技術です。</s>
</p>
<p>
<s>近年、AIの発展により、より自然な音声合成が可能になりました。</s>
<s>特に、ニューラル音声は従来の音声合成と比べて、感情豊かな音声を生成できます。</s>
</p>
</speak>
発音制御のためのSSMLタグ
<phoneme>
タグを使って発音記号 (IPA, X-SAMPA) を指定することで、特定の単語の発音を制御できます。
<speak>
私の名前は、<phoneme alphabet="ipa" ph="takasi">たかし</phoneme>です。
</speak>
実際にやってみると分かるのですが、これは「てぃけし」と読みます、、
意外とうまくいかないいこともあるので注意が必要なようです
<sub>
タグを使って頭字語や略語の発音を指定し、誤読を防ぐこともできます。
<speak>
<sub alias="ワールドワイドウェブ">WWW</sub>は、インターネット上の情報を共有するシステムです。
</speak>
さらに、<w>
タグで単語の品詞を指定することで、文脈に合った発音を実現できます。
<speak>
<w role="amazon:VB">read</w>は動詞で、本を読むという意味です。
一方、<w role="amazon:NN">read</w>は名詞で、読むこと自体を表します。
</speak>
表現力を高めるためのSSMLタグ
<prosody>
タグを使って音量と話速を調整し、抑揚をつけることで、より表現力豊かな音声を生成できます。
<speak>
<prosody volume="loud" rate="slow">この部分は、ゆっくりと大きな声で読み上げられます。</prosody>
<prosody volume="soft" rate="fast">この部分は、小さな声で速く読み上げられます。</prosody>
</speak>
また、<amazon:effect name="drc">
タグでダイナミックレンジ圧縮を施すことで、聞き取りやすさを改善できます。
<speak>
<amazon:effect name="drc">
この部分は、ダイナミックレンジ圧縮が適用され、聞き取りやすくなります。
</amazon:effect>
</speak>
より高度なSSMLタグの活用
<lang>
タグを使って外国語の発音を指定することで、より自然な発音を実現できます。
<speak>
私は、<lang xml:lang="en-US">Hello</lang>と言って、彼女に挨拶しました。
</speak>
<say-as>
タグを使って数字や単位、日時などの発音方法を指定することもできます。
<speak>
今日は、<say-as interpret-as="date" format="ymd">2023-04-26</say-as>です。
</speak>
さらに、<mark>
タグでカスタムタグを埋め込むことで、音声合成のメタデータを活用できます。
<speak>
これは、<mark name="example"/>SSMLタグの使用例です。
</speak>
まとめ
簡単にやってみましたが、
<speak>
私の名前は、<phoneme alphabet="ipa" ph="takasi">たかし</phoneme>です。
</speak>
が曲者でしたね、、、
アルファベットで指定するとむしろ読み方がうまくいかないとは、、
とはいえ音声合成をいじれて楽しいのでもう少し遊んでみようと思います
参考サイト