少し前にpythonやAmazon Transcribeを使った文字起こしの連載を書いてました。
音声認識→文字起こしという流れは、議事録作成とかに非常に便利なものです。自分の作業を楽にするのには役に立っています。
そんな中、逆側のリクエストがきました。そう、音声読み上げ(っていうか、自動電話)したいと。昔Twilio使って実装した記憶があったので、さくっと作ったサンプルを下に少しTwilioの使い方を紹介していきます。
Twilioにアカウントを作ってみる
兎にも角にもアカウントを作成していかないと始まらないので、アカウント作成から。
アカウント作成: 無料サインナップ
①無料サインナップをクリック

②必要情報を入力

入力して無料トライアルをクリックすると、e-mail verificationが飛んできますので、承認すると以下のような画面に飛びます。

この画面で電話番号を入力して、チェックボックスにチェックを入れて確認ボタンを押すと、SMSで確認コードが飛んできます。
飛んできた確認コードを入力して、その他細かい質問に答えるとDashboardにたどり着きます。

電話するための下準備〜番号購入とSID/Tokenの入手〜
さて、アカウントのセットアップも終わって、さぁすぐに電話できる!とは当然なりません。以下の2つの下準備が必要になります。
電話する以上電話番号を購入する必要があります。twilioを利用するには有料化して電話番号を購入しないと処理ができません。
また、SIDやAuthtokenがtwilio apiを利用してローカルなどからコールを実行する際には必要です。さて、2つの取得方法を見ていきます。
twilio: 電話番号の購入
左側のガイドナビで電話の形をしているアイコンをクリックします。そうするとナビが開きますので、その中で電話番号をクリックします。
そうすると以下のような画面が表示され、Get a Numberを選択すると新規の電話番号を取得できます。

SIDとauthtokenの取得

実行する際に利用しますので、アカウントSIDとauthtokenは保存しておいてください。
AWS S3に音声データを入れて、Twilio Programable voiceを利用する
今回は音声データ自体をS3バケットにパブリックアクセスを許可する形で保存して、その音声データを利用して電話をしてみます。
twilioライブラリをインストール
まずは何より、pipなどにtwilioライブラリをインストールします。
Programable Voice 呼び出し用のコードを作成する
ざっと簡単なやつでこんな感じです。
from twilio.rest import Client
# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'sidを入力'
auth_token = 'auth_tokenを入力'
client = Client(account_sid, auth_token)
call = client.calls.create(
url='S3に入れたxmlファイルのurlを入力',
method="GET",
to='電話をかける相手の番号を+81(日本の場合)....で入力',
from_='twilioで購入した番号を入力',
)
print(call.sid)
S3バケットに登録したxmlファイルを電話口で流すというものです。
まとめ
ざっと簡単なtwilioの使い方を見てきました。これで、音声通話の自動化にも走り出せそうです。
ただ、音声通話の最大の難しさである、インタラクティブなやりとりについては、実装が少し深くなりそうなので、今回は紹介をPassします。
twilioでもできそうですが、トークシナリオ考えたりしながら、実装組んでいくとほんと深くなりそうです。ちょっとここはどうするか考えものですね。いいSaaSがあればそちらを併用した方がいいかも。でも昔調べた感じだと性能が微妙だったり、異常に高かったりで。。
まぁノンプロとしては関係ないと割り切ってもいいですし、インタラクティブトークまで実装したいというかたがいれば一緒にがんばっていきましょう。(記事化するかどうかは未定です)
個人的には電話やFaxは大っ嫌いでして、全てテキストになってくれればとおもうのですが、リクエスト元が耳の悪い方向けにって言われたのでそれならやろうかってなっただけです(それでもメールでよくないってやりとりも実はあったんですが。。)。基本スタンスは、電話やFaxはなくなっていけばいいと思ってます。