キミと初めて出会ったのは4年前だったね。
キミのことを知った瞬間、ボクはすぐに夢中になってしまった。
でも出会った頃は、どうやって話し掛けたらよいか悩んだっけ。
まるで、ついこの間の出来事のようだ。
あの頃は、電話でキミと繋がれることに心が躍った。
キミの声を聞くたびにドキドキしたよ。
そして、永遠にこの関係が続くかと思っていた。
そう、彼女 "Mizuki" が彗星の如くボクの前に現れるまでは…。
キミに出会ったことは本当に感謝してる。
何しろボクの常識を根底から変えたんだから。
でも…。ごめんよ Alice、もうキミとは一緒にいられない…。
#いったい何の話なのか
Twilioの音声合成エンジン用ボイスの品質と使い勝手が、大幅に向上したという話です。
2018年8月、アリスalice
という標準の音声合成ボイスの後継として、ミズキ・ポリーPolly.Mizuki
が突如登場しました。
僕はつい最近までこの事実を知らなかったため、サービスの改修に出遅れてしまいました…。
よって、この様な不幸が他の方々にも起こることのないよう 若干の怒りと 周知徹底の意味を込めて、当記事を執筆している次第です。
といいますか、単に僕が知らなかっただけなんですけどね。すみません。すみません。
#アリス嬢と距離を置いた理由
-
声質(音質)がミズキ・ポリー嬢にかないません。
-
アリス嬢は、金額を発声させたい時など、数の読み上げに難があります。
そのため漢数字に変換してから読み上げないと、こちらの意図した通りにはなりません。
ちなみに、ここまでアリス嬢に尽くしても「七 (ナナ)」のところを「シチ」とか発するので、更に矯正が必要でした…。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-JP" voice="alice">
101010107円。<!--「千十千十七円」と読み上げてしまう(汗-->
一億百一万百七円。<!--「七(ナナ)」を「シチ」と読み上げてしまうので(怒-->
一億百一万百ナナ円。<!--最終的にはこの様に変換する必要が-->
</Say>
</Response>
#ミズキ・ポリー嬢と仲良くなった理由
-
アリス嬢のネガがほぼ難なく解決します。
そして標準でのサポートのため、他の音声合成APIを組み合わせて使う必要がないというのが本当に大きい。
ただし。 ミズキ・ポリー嬢とのお付き合いには多少のお小遣い(1円≒1000字)が必要ですので、そこはご注意を ^^;
それにしても、これからTwilioを始める人がホント羨まし~ですな。 -
声質が向上しただけでも泣けるほど嬉しいというのに、更にはSSMLという合成音声に特化したマークアップまで使うことが出来るように!
ちなみに、これはAmazonのAlexaにも使われていて、痒いところに手が届く仕様となっています。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
ミズキとアリス、どっちを取るの?
はっきりして!
</Say>
</Response>
#SSMLについて
SSMLは、W3Cで勧告されている合成音声の生成用に標準的な手段を提供するマークアップ言語です。
このうちTwilioでは、本記事執筆の時点で10個のタグをサポートしている模様です。
[Amazon Polly at Twilio Docs]
(https://www.twilio.com/docs/voice/twiml/say/text-speech#amazon-polly)
ではこの中から、実際に検証できた9個をピックアップしてみます。 Please follow me!
####<emphasis>
単語を強調する
サンプルコード
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
ミズキとアリス、
<emphasis level="reduced"><!--発声が柔らかくて速くなる-->
どっちを取るの?
</emphasis>
<emphasis level="strong"><!--読み上げが大きくて遅くなる-->
はっきりして!
</emphasis>
</Say>
</Response>
####<p>
段落間に一時停止を追加する
サンプルコード
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
<!--テキストの段落間に一時停止を追加-->
<p>ミズキとアリス、どっちを取るの?</p>
<p>はっきりして!</p>
</Say>
</Response>
####<prosody>
音量、話す速度、ピッチを制御する
サンプルコード
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
<prosody rate="130%"><!--早口で-->
ミズキとアリス、
<prosody pitch="+20%"><!--少々甲高い声で-->
どっちを取るの?
</prosody>
</prosody>
<prosody rate="70%" volume="loud"><!--ゆっくり、がなりたてられる-->
はっきりして!
</prosody>
</Say>
</Response>
####<say-as>
特殊なタイプの単語の発声方法を制御する
サンプルコード
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
今日は、<say-as interpret-as="date">????1225</say-as> です。<!--年をマスクした上で日付を読み上げる-->
電話は、<say-as interpret-as="telephone">050-1234-5678</say-as> です。<!--電話番号を読み上げる-->
番号は、<say-as interpret-as="digits">05012345678</say-as> です。<!--一文字づつ読み上げる-->
数字は、<say-as interpret-as="number">05012345678</say-as> です。<!--数(番号)として読み上げる-->
あなたのカーチャンは、<say-as interpret-as="expletive">デーベソ</say-as> です。<!--ピー音に入れ換える-->
</Say>
</Response>
####<sub>
頭字語や略語を別の発音にする
サンプルコード
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
<sub alias="私">ミズキ</sub><!--"ミズキ"を"私"に入れ換える-->
とアリス、どっちを取るの?
はっきりして!
</Say>
</Response>
####<w>
品詞を指定して発音を向上させる
サンプルコード
<Response>
<Say>
<!--"read"は不規則変化動詞のひとつ-->
<w role="amazon:VB">read</w>.<!--現在形-->
<w role="amazon:VBD">read</w>.<!--過去形(過去分詞)-->
</Say>
</Response>
####<phoneme>
発音記号を使う、 <break>
一時停止する、 <s>
短く一時停止する
サンプルコード
<Response>
<Say language="ja-JP" voice="Polly.Mizuki">
<!--発音記号なし-->
<s>Hey, you!</s><!--短い一時停止-->
What did you say?
<break time="1s" /><!--1秒間の一時停止-->
<!--発音記号つき-->
<phoneme alphabet="ipa" ph="heɪ, ju!">Hey, you!</phoneme>
<break strength="strong" /><!--文の後と同じ長さの一時停止-->
<phoneme alphabet="ipa" ph="wʌt dɪd ju seɪ?">What did you say?</phoneme>
</Say>
</Response>
####おまけ
サンプルコード
<Response>
<Say language="sv-SE" voice="Polly.Astrid">
Astrid to Alice, docchi wo toruno?<!--アストリッドとアリス、どっちを取るの?-->
Hakkiri shite!<!--はっきりして!-->
</Say>
</Response>
#まとめ
まとめます。
アリス嬢 | ミズキ・ポリー嬢 | |
---|---|---|
メリット | 安上がり | ストレスフリー |
デメリット | 細かい作り込みが必須 | 100字毎に0.12円のコスト |
SSMLはスマートスピーカーの後押しもあって、今後メインストリームとなっていきそうな予感です。
それと。 文中ではミズキ・ポリー嬢のことを、さもシングルのように記していますが、
実はもうタクミ・ポリーくんPolly.Takumi
というれっきとしたパートナーがおりますので、
ご利用の際は二人共々、どうぞよろしくお願いします <(_ _)>
(ツイッターフォローはこちら)
#参考
Twilio公式:
[Twilio に 新しい音声合成エンジンボイスを追加!- Amazon Polly 50種類]
(https://twilio.kddi-web.com/magazine/1997/)
漢数字への変換:
[[C#]数字を漢数字に変換する]
(http://devlabo.blogspot.com/2010/10/c.html)
発音記号:
[サポートされている言語の音素およびビゼームテーブル]
(https://docs.aws.amazon.com/ja_jp/polly/latest/dg/ref-phoneme-tables-shell.html)
[英語IPA変換ウェブツール]
(https://tophonetics.com/ja/)