はじめに

昨年 12 月 20 日に弊社でクリスマスパーティーを行った際、
イベントの 1 つとして、計 12 台の Google Home に賛美歌を歌わせてみました。

昨年は、 Amazon Echo (以降、 Echo), Google Home (以降、 Home), Line Clova (以降、 Clova) が一般発売され IT 業界だけでなく一般の方のスマートスピーカーへの関心も高まった年だったのではないでしょか。
弊社でも個人で Home や Echo を購入した社員がおりました。

さて、この Home 12 台に賛美歌を歌わせるというプロジェクトですが、 始まりは上司とのある雑談からでした。

上司「 Home は会社のと個人の合わせたら、12 台もあるのかぁ〜」

自分「開発会社とはいえ、よくもまぁみんな買いましたね・・・」

上司「全部集めたらどうなるんだろう、なんかできないかな」

自分「 (スピーカー集めて何するつもりだよこの人) クリスマスも近いし賛美歌でも歌わせます?」

上司「いいなそれ、作ってよ」

自分「 (言うんじゃなかった) 了解っす」

SSML

そんなこんなで Home に賛美歌を歌わせることになったのですが、
音程や抑揚の再現をどうするのか調べたところ Home では、SSML (Speech Synthesis Markup Language) が使えることがわかり、 SSML で組むことにしました。
耳コピで SSML を組むという苦行の結果、以下のようになりました。
<speak>
  <prosody rate="slow">
    <prosody pitch="3.4st">きぃぃい</prosody>
    <prosody pitch="3.8st">ぃよぉー</prosody>
    <prosody>しぃーー</prosody>
    <break time="1s"/>
    <prosody pitch="3.4st">こぉーー</prosody>
    <prosody pitch="4.2st">の</prosody>
    <prosody pitch="3.6st">よーー</prosody>
    <prosody>るぅーー</prosody>
    <break time="1s"/>
    <prosody pitch="4.4st">ほぉーー</prosody>
    <prosody pitch="4.2st">しーー</prosody>
    <prosody pitch="3.8st">わーー</prosody>
    <break time="1s"/>
    <prosody pitch="3.6st">ひーー</prosody>
    <prosody pitch="4st">かーぁ</prosody>
    <prosody pitch="2.8st">りーー</prosody>
    <break time="1s"/>
    <prosody pitch="3.5st">すぅーー</prosody>
    <prosody pitch="3.5st">くーー</prosody>
    <prosody pitch="3.3st">いーーぃ</prosody>
    <prosody pitch="3st">のー</prosody>
    <prosody pitch="2.6st">みぃーい</prosody>
    <prosody pitch="2.8st">こぉーおー</prosody>
    <prosody pitch="2st">わーー</prosody>
    <break time="1s"/>
        <prosody pitch="3st">まぁーー</prosody>
        <prosody pitch="3.4st">ぶぅー</prosody>
        <prosody pitch="3.8st">ねぇーーぇ</prosody>
        <prosody pitch="3.4st">のー</prosody>
        <prosody pitch="2.8st">なぁー</prosody>
        <prosody pitch="3.2st">かぁーーぁ</prosody>
        <prosody pitch="3st">にぃぃー</prosody>
        <break time="1s"/>
        <prosody pitch="3.8st">ねぇーーぇ</prosody>
        <prosody pitch="3.8st">むぅ</prosody>
        <prosody pitch="4st">りぃーーい</prosody>
        <prosody pitch="4st">たぁ</prosody>
    <prosody pitch="4st">もぉーー</prosody>
    <prosody pitch="4st">おーーぉ</prosody>
        <break time="1s"/>
    <prosody pitch="3st">いーぃ</prosody>
    <prosody pitch="3st">と</prosody>
    <prosody pitch="3.3st">やーあ</prosody>
    <prosody pitch="3st">すぅぅ</prosody>
    <prosody pitch="2.8st">くぅーーー</prosody>
  </prosody>
</speak>

問題発生

苦行の末の SSML なのですが、ある問題が発生しました。
それは、「 Home に返せるレスポンスに文字数制限があった」ことです。
リファレンス を見るとわかるのですが、レスポンスは 640 文字までとなっています。
これは、 SSML のタグ文字列なども含めての文字数です。
なので、実際に歌わせたのは「〜星は光り」のところまでです。

結果

実行させた結果を動画にしました。 ※ 28 秒あたりからご覧ください。

考察

出来栄えはともかく、面白いものができたので良かったのですが、
動画でもあったように 12 台のうち実際に動いていたのは 7 台でした。 稼働率にすると約 60 % です。
ここで考察なのですが、ある参考サイトによると Google Home の音声の認識率は 68 % だったそうです。
なので、稼働率 60 % は妥当な数字だったのかもしれません。

最後に

SSML を組んだ方法ですが、 Actions on Google の Simulator を使い、都度確認しながら組みました。
正直 SSML 辛かったです。。
SSML では Audio の再生も出来てしまうので、音源拾ってきて流すだけでいいのではと挫折しそうになったこともありました。
でも、笑顔を作ることができて頑張った甲斐があったと思っています。

クリスマスパーティーの様子は弊社の facebook ページに動画・写真をアップしておりますので、 ご興味がありましたら是非ご覧ください。

おまけ

11 台を 1 箇所に集めたらこんなことになってしまいました。

1515571579938.JPEG 1515571579873.JPEG