喉を痛めたのでPollyにDDRネタLTの語り手を託した話

先日、風邪を引いてしまいました。
久々の発熱で寝込んでしまい、熱が収まった頃には鼻水のナイアガラが止まらず、まさかと思っていたら喉にまで風邪が到達してしまいました。
風邪のフルコースはあまり嬉しくないものですね。

▲ 体力の衰えに、ちょっと凹んだりもしました

こんにちは。AWS事業本部のShirotaです。最近は小ぶりなのど飴のパックが多くて生きやすくなったなと感じました。

LT前に風邪を引いて声が出し辛くなってしまった

「自分の喋りたい事を喋る」社内LTの前日、 ほぼほぼ声が出せなくなってしまいました 。 喉を慮って喋ってみると20dbくらいしか出ず、そもそも凄いハスキーな声で聞こえづらい事山の如し。明日の5分だけでも生き返って私の喉……!
と思いつつ、「声が出ない 風邪 治し方」と調べてみたところ、ほとんどのソリューションは「喉を極力使わない」の一点張り。
ぐぬぬ、明日はスケッチブックでも持って行ってフリップ芸をするか……と思ったものの、5分間沈黙で過ごすのは結構難しい。私はどこかのツバメさんにはなれない。
どうしよう。前日悩み、ふと気付きました。

そうだ、そもそも自分が話す必要ないよな?

Amazon Polly に喋ってもらおう

風邪で喉が痛いけどプレゼンテーションをしないといけない時 、AWSには役立つサービスがあります。
その名も Amazon Polly です。

Amazon Polly は、文章をリアルな音声に変換するサービスです。テキスト読み上げができるアプリケーションを作成できるため、全く新しいタイプの音声対応製品を構築できます。Amazon Polly は、高度な深層学習技術を使用したテキスト読み上げサービスで、人間の声のような音声を合成します。
何十種類ものリアルな音声を多数の言語でサポートしているため、最適な音声を選択して、さまざまな国で対応する音声アプリケーションを構築できます。

公式ページによる、Pollyの説明がこちらです。
このサポートされている言語の中に日本語があったので、今回はPollyを使ってLTの原稿を読ませていこうと思います。

Mizukiさんに発声練習をして貰う

Pollyでは、現在のところ日本人に関して「Mizuki」という女性と「Takumi」という男性の声が収録されています。
以下のように文章を入力して、実際にMizukiに話して貰います。

▲ 普通に文章を打ち込むだけで、読み上げが簡単に出来ちゃいます

実際に上記の文章を話してもらったものは、こうなりました。

おお! 喋ったァ!

実はこれが初Pollyだったのですが、

  • 予想以上に流暢
  • 漢字の読み間違い(自分が読ませたいように読んでもらえない)が少ない
  • 息継ぎが比較的人間らしい

と言った感想を持ちました。
数字やアルファベットも、日本人が想定する読み方で読んでくれる事が多くて有り難いです。

個人的に気になった事は

  • 「〜の方」は「〜のかた」と読まれてしまう
  • ミズキのイントネーションが想定と違った

と言った事くらいでした。
実際、上記問題は 表記を操作 (ほうと読ませたいところは「方」ではなく「ほう」とひらがなで記載する)したり、Pollyでサポートされている SSMLタグ を利用して調整を加えました。

SSMLタグとは?

SSMLとは 音声合成マークアップ言語 というもので、合成音声を生成する為のテキストをマークアップする言語です。
HTMLが、ブラウザでコンテンツを見る際にコンテンツを整形してくれるものだとしたら、SSMLはコンテンツを聞く際にコンテンツを整形してくれるものといったところでしょうか。
身近なところでいうとAlexa Skill Kitでサポートされていたりします。
実際、PollyでサポートされているSSMLタグは以下のリンクを参照してみて下さい。

Amazon Polly でサポートされている SSML タグ

これを参照しつつ、ぼくのかんがえたりそうのMizukiを構築してみます。

  
<speak>  
昨日から喉が痛く、声の出が微妙です。  
なので、今日は  
<prosody pitch="+30%">ミ</prosody>  
<prosody pitch="-20%">ズ</prosody>  
<prosody pitch="-50%">キ</prosody>。  
にライトニングトークの代弁をお願いする事にしました。  
</speak>  

この部分がSSMLで書かれていますよーを宣言する必要がある為、全ての文章をタグで囲んでいます。
また、気になったイントネーションは音声の音量、速度、ピッチを制御するタグで囲い調整しました。
そしてピッチを調整した時、どうも「ミズキ」と「に」の間が詰まっているように聞こえたので句読点を入れる事で間を置くようにしてみました。
これを、先程使った「Plain text」タブから「SSML」タブに移動して入力し、実際に喋らせてみます。

どうでしょうか。個人的には 80パーセントくらい りそうのMizukiになった気がします。

SSMLタグ、上手く使いこなせば歌わせるところまで調整が効きそう(ピッチや話す速度のみならず、呼吸音や柔らかな発声までも出来る)なので機会があったらもうちょっといじり倒してみたいです。

発表は10時、現在は1時、喉大惨事

さて、Mizukiが割と初期設定のままでも流暢に喋ってくれる事が分かったところでサクサクとLT原稿を読ませていきます。
本来なら会話の間や発音に違和感のある所は調整していきたいのですが、今回の主目的は「 当日声が出なかった時に5分間のLTを乗り切る 」事です。
原稿をPlain textとしてPollyに入力し、MP3で出力して、LT資料に貼り付けていきます。
その際、[バックグラウンドで再生]を選択後に[スライド切り替え後も再生][停止するまで繰り返す]のチェックを外す事で プレゼンのページをめくったら私の代理であるミズキが喋り出す という状況を実現する事が出来ます。

▲ 状況によってはフェードイン/アウトのタイミングも活かせると効果的かも

この作業の面白い所は、 実際のプレゼンテーション時間を可視化出来る所 ですね。
今回、5分のLTと言われていたのでPollyの音声を貼り付けた後にプレゼンテーションを一通り流してみてリハーサルをやってみました。
喉を痛めずに何度もリハーサルがやれます。 まぁもう痛めているのですが。

ところで何のLTをやろうとしているの?

上の写真で何となく察して頂けた方もいるかと思います。
また、私の ジョインラノベ を読んで下さった方もご存知かもしれません。

▲ WordPressのビジュアルモードで改行していたあの頃

ゲーセンで結構ガチで身体を動かしてきた ので、 ゲーセンで結構ガチで身体を動かす 事についてのLTをやろうとしていました。(DDR ゲーム とかでググってみてね!)

無事、自分で喋るLT資料は完成したが

さて夜中に突っ走り、何とか私が不在でもほぼほぼ成り立つLT資料が完成しました。
ところが、ここで大きな誤算がありました。
実はこのLT、AWS事業本部のコンサルティング部内での合宿でやる予定でした。
ですが今回の合宿予定地が越後湯沢で、先日の地震を受け越後湯沢での合宿が中止になってしまったところだったのです。
その結果、ハングアウトで各拠点を繋ぎながらのLT大会へと変更されてしまったのですが、 そこの考慮が全く出来ていませんでした
拠点のChromeboxに向かって話す事になったのですが、喋る代わりのLT資料の出力をPCの内蔵スピーカーにしてしまうと……お分かりでしょうか。
Chromeboxがスピーカーの音を拾い、拾った音を再びChromeboxが放つ為 ハウリング が発生してしまいます。
前日よりは喉が回復していた私は泣く泣く、声を振り絞りながらLTを走り切りました。
その後で頂いたトローチが、喉から心の奥へすうっと沁み渡りました。

折角夜なべした成果を意地でもアウトプットする

私のMizukiを、みんなに聞いてもらいたかった。
いや、聞いて貰えば良いんだ。
動画にしよう

と言う訳で、動画にする為に必要な「クリックのタイミング」を資料に記録させます。
[タイミングの記録]にチェックを入れ、[スライドショーの記録]を選択します。
実際に流れるPollyの音声を聴きながらスライドを進めていきこれを記録する事により、遂には喋る私のみならず スライドを進める私も不要 になります。
  

▲ 私が作ったのに、私の手を完全に離れたLT資料

この「タイミング」ですが、パワーポイントを動画ファイルにエクスポートする際に使用する事によってプレゼンを全自動で進めた動画を作成する事が可能になります。
ただ、私が使用していた PowerPoint for Mac 16.20 では、 埋め込みメディアファイルは再生できない (パワーポイント作成時に録音したナレーションのみが再生可能)状態でした。オーディオアイコンも、プレゼンでないせいか動画にバッチリ表示されてしまいました。
なので、今回は動画へのエクスポートはWindowsのPowerPointから実行しました。

▲ 選択事項はMacとほぼ変わっていませんでした

こうして、私が実際にLT会場でやりたかったLTの動画が完成しました。
これで、LT会場で無くても、私自身が存在しなくてもLTを発表する事が出来ます。

実際に作ったものは、こんな感じです。

技術は便利だし、何より楽しい

今回、ほんの細やかな「困った」がキッカケとなってAWSの触った事の無かったサービスに触れる事となりました。
結果、新しい技術に触れるキッカケなんてこんなもので良いのではないか?と思ったし、そもそもの技術に対するモチベーションはこういうところから来るものだよなぁと改めて感じたりもしました。
何より、目の前の課題を解決出来るしそこまでの過程は 楽しい です。
色々悩み、試行錯誤して出せた良い答えはとても 便利 なものです。
この勢いを、もっと他のAWSサービス、延いてはIT技術の学習へ飛び込むところに活かせるよう、これからも日々に蔓延る不便を技術で解決出来ないかを考える習慣を身につけていきたいなと思います。
勿論DDRも、まだまだ続けていきますよ!