Amazon
ACCESSDay 18

Amazon AI pollyを使ってみた

More than 1 year has passed since last update.


この記事について

この記事は ACCESS Advent Calendar 2016 18日目の記事です。

ACCESS の @shotasakamoto です。


この記事の主題は?

最近、機械学習とか勉強するモチベーションが上がってきて、CRFやword2vecとかについて記載しようと思いましたが、12月に発表されたAmazon AIについてちょっと興味があったので、前述した内容について少し触れていきたいと思います。


Amazon AIの種類

以下の3つになります。

* Amazon Recognition

* Amazon Polly

* Amazon Lex

画像認識よりも言語解析・処理とかに興味がある方なので、

LexかPollyを見ようかと思ってましたが、Lexはまだプレビュー版的な位置づけだったので、

Pollyで遊んでみました。


Amazon Pollyとは?

簡単に言うと、「入力した各種言語テキストを音声に変換する」機能となります。


開発ドキュメントは無いの?

もちろんあります。

以下を参照してください。(このドキュメント読んだら、この記事の内容は全部入ってますね・・涙)

開発ドキュメント


どうやって使うの?

すごく簡単です。(カップラーメン作っている間に出来そうです)

* AWSのアカウント作る

* AWS コンソールにログインする(ただし、東京リージョンだとまだサービスが無いので、米国東部とかリージョンを変更する必要がある)

* サービスで[Polly]を検索して、pollyのページに移動

* テキスト入力欄に適当にテキストを入れて、「音声を聴く」ボタンを押す

こんな感じで、サクッと遊べます。

以下のような画面が表示されます。

※日本語だと、現時点ではまだ女性(ミズキさん?)のみの音声となります。

英語だと数種類の音声パターンがありました。

スクリーンショット 2016-12-17 15.18.37.png


読み方の設定とかは出来ないの?

可能です。

具体的には、下記が挙げられます。

* SSML(音声合成マークアップ言語)を設定

* レキシコンの設定

SSMLの例は以下です。(下記は「SSML」という単語を強調して読ませるようにしています)

※他には指定した箇所を英語で読んだり、読み上げ速度を変えたりなど、設定が結構変更可能だったりします。

<speak xml:lang="en-JP">これは<emphasis level="strong">SSML</emphasis>の例です。</speak>

レキシコンでは、「指定した単語の読み上げ方を変更する」ことが可能です。

書き方の例は下記です。

※下記は言語設定をen-US(英語)に設定しています。

なぜか日本語(JP)はまだ設定出来ないような感じがしますね・・。

<?xml version="1.0" encoding="UTF-8"?>

<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"

alphabet="ipa"
xml:lang="en-US">
<lexeme>
<grapheme>www</grapheme>
<alias>world wide web</alias>
</lexeme>
</lexicon>

上記の例だと、「www」という単語を「world wide web」に読み替える設定となります。

レキシコンはxxx.plsという名前で保存して、コンソールからアップロードが可能です。


自分の作ったアプリからは何か遊べないの?

遊べます。

pollyの機能の呼び出しもかなり簡単で、

例えばpythonだと以下のような感じでよみだしが可能です。

※公式ドキュメントのサンプルを下記に記載しています。(p10参照)

session = Session(profile_name="adminuser")

polly = session.client("polly")
try:
# Request speech synthesis
response = polly.synthesize_speech(Text="Hello world!",
OutputFormat="mp3",
VoiceId="Joanna")
except (BotoCoreError, ClientError) as error:
...

responseにmp3での音声データが入ってくるので、

このデータをファイルに保存したり、再生したりすることが可能です。


最後に

駆け足でしたが、ざっくりpollyについての概要を記載しました。

試しに遊んでみるのはすぐ出来ると思いますので、ご興味お持ちの方は、ぜひぜひ遊んでみて頂ければと思います。

明日(12/19) の ACCESS Advent Calendar 2016@DaisukeKondo さんの記事となります。お楽しみに!!