SSML(Speech Syntesis Markup Language)とは、音声を表現しようとするマークアップ言語である。
概要
文章というものには、音程や速さのような情報は含まれていない。それらの情報は人間が読み上げる時に付与するものである。
SSML(Speech Syntesis Markup Language)とは、そういった読み上げに必要な情報の一部を文書に埋め込んで、コンピューターが自然な合成音声を出力する助けにしようとするXMLによるマークアップ言語である。
もっとも、2010年代以降のAIブームによりコンピューターが文脈を解釈して、上記のような情報をPC(あるいはクラウド)側で補完できるようになりつつある。それでも明示的に指定すればAI単独よりもより自然な合成音声が得られるかもしれない。
開発終了
W3Cが中心となって開発していた。最初の草案が出たのは2000年8月8日。バージョン1.0は2004年9月7日、バージョン1.1は2010年9月7日にW3C推奨になった。
だが、W3Cの音声ブラウザ作業部会は2015年10月12日に解散しており、後発団体であるWHATWG内にもSSMLに関するものはない(要望があがったが却下されている
)ので、これ以上進歩することはないと思われる。
用途
Web Speech APIやMicrosoft Speech API, Microsoft Speech Platform以外にも、GoogleのCloud Text-to-Speechや、Alexa、Azureなどでもサポートされているが、多くはSSMLの一部の機能のサポートにとどまっている。
例
以下はPowerShellスクリプト内のSSMLを読み上げるサンプルである。(SJISで保存しないと日本語は文字化け状態で読み上げられる。)音程の指定が十分に反映されないのは音声合成エンジン側の仕様と思われる。
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
$speak.Speak("日本語使用可能")
$Phrase = '
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-US">
<voice xml:lang="en-US">
<prosody rate="1">
<p>Normal pitch. </p>
<p><prosody pitch="x-high"> High Pitch. </prosody></p>
<p><prosody pitch="low"> High Pitch. </prosody></p>
<p><prosody pitch="+2st"> High Pitch. </prosody></p>
<p><prosody pitch="+4st"> High Pitch. </prosody></p>
<p><prosody pitch="+6st"> High Pitch. </prosody></p>
<p><prosody pitch="+8st"> High Pitch. </prosody></p>
<p><prosody pitch="+10st"> High Pitch. </prosody></p>
<p><prosody pitch="+12st"> High Pitch. </prosody></p>
<p><prosody pitch="x-low" range="x-high" rate="fast" volume="x-loud"> High Pitch. </prosody></p>
<p>Normal pitch. </p>
</prosody>
</voice>
</speak>
'
$speak.SpeakSsml($Phrase)
# $speak.SetOutputToWaveFile("testwave.wav")
$Phrase = '
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="jp">
<voice xml:lang="jp">
<prosody rate="1">
<p><prosody pitch="+2st"> ド </prosody>
<prosody pitch="+4st"> レ </prosody>
<prosody pitch="+6st"> ミ </prosody>
<prosody pitch="+8st"> ファ </prosody>
<prosody pitch="+10st"> ソ </prosody>
<prosody pitch="+12st"> ラ </prosody>
<prosody pitch="+14st"> シ </prosody></p>
<p><prosody pitch="+16st"> ド </prosody></p>
<p><prosody pitch="500Hz" range="x-high"> High Pitch. </prosody></p>
<p>Normal pitch. </p>
</prosody>
</voice>
</speak>
'
$speak.SpeakSsml($Phrase)
$speak.Dispose()
外部リンク
関連項目
- 0
- 0pt

