とある技術の開発日記

Diary of irregular phrase programmer

Twilioの自動音声を日本語で行う方法(C#版)

Twilioのネタも4回目になります。 1回目の記事で自動音声の日本語にできないかと思っていたのですが、ドキュメントに載っていたのでご紹介します。

2回目の記事はこちら(そのうち目次エントリ作ると思います)

blog.hamamotsu.jp

TwiXMLを返却するActionメソッドを作成する。

public ActionResult Index()
{
    var response = new TwilioResponse();
    response.Say("こんにちは", new { voice = "alice", language = "ja-JP" });
    response.Say("さようなら", new { voice = "alice", language = "ja-JP" });
    response.Say("漢字も話すことができますよ。", new { voice = "alice", language = "ja-JP" });

    response.Say("こんにちは", new { voice = "man", language = "ja-jp" });
    response.Say("さようなら", new { voice = "man", language = "ja-jp" });
    response.Say("漢字も話すことができますよ。", new { voice = "man", language = "ja-jp" });

    response.Say("こんにちは", new { voice = "woman", language = "ja-jp" });
    response.Say("さようなら", new { voice = "woman", language = "ja-jp" });
    response.Say("漢字も話すことができますよ。", new { voice = "woman", language = "ja-jp" });
    return TwiML(response);
}

該当のドキュメントはこちら
Twilio Cloud Communications - APIs for Voice, VoIP, and Text Messaging

ドキュメントには男性の日本語が使えるとあるけれど・・・

ドキュメントにはmanとwomanの場合は日本語も使用できると書いてあったり。 f:id:airish9:20150708112801p:plain

manとwoman英語、スペイン語、フランス語、ドイツ語、イタリア語が使用できる(日本語不可)とあったり

動詞では、2種類の別々のボイスエンジンが選べます。まず man と woman、これらは共に 英語、スペイン語、フランス語、ドイツ語、イタリア語 で利用できます。

情報が混在してますが、実際に試した感じだと日本語はaliceの場合のみ対応しているようです。

参考程度ですが、今回のActionResultが返すTwiMLはこのようになります。

<?xml version="1.0" encoding="utf-8"?>
<Response>
  <Say voice="alice" language="ja-JP">こんにちは</Say>
  <Say voice="alice" language="ja-JP">さようなら</Say>
  <Say voice="alice" language="ja-JP">漢字も話すことができますよ。</Say>
  <Say voice="man" language="ja-jp">こんにちは</Say>
  <Say voice="man" language="ja-jp">さようなら</Say>
  <Say voice="man" language="ja-jp">漢字も話すことができますよ。</Say>
  <Say voice="woman" language="ja-jp">こんにちは</Say>
  <Say voice="woman" language="ja-jp">さようなら</Say>
  <Say voice="woman" language="ja-jp">漢字も話すことができますよ。</Say>
</Response>

この状態で電話をかけるとすべてAliceの音声で再生されます。