プログラミング初心者がAITalkWebAPIをたたいてみた

[国産Web API Advent Calendar 2018](https://qiita.com/advent-calendar/2018/apijp)の18日目の記事です。

こんにちは、[株式会社エーアイ](https://www.ai-j.jp/)の戸田です。AITalkWebAPIの紹介をします！

AITalkWebAPIは、高品質音声合成エンジン「AITalk」をSaaS型で簡単に利用できる音声合成APIです。REST形式でつかえて、GET・POSTで取得可能です。

国内で日本語音声合成について研究開発、製品・サービス化を行っている[株式会社エーアイ](https://www.ai-j.jp/)が提供しています。

AITalkWebAPIは法人向け、有料サービスです。  

ただ、ハッカソンなどによく提供しているので個人の方でも使ってみたい方はぜひ記事をご覧ください。  
　【弊社ブログです。】[音声合成AITalkが利用できるハッカソンまとめ～2018年編～](https://www.ai-j.jp/blog/cate4/89/)

## プログラミング初心者がAITalkWebAPIをたたいてみる
本記事では、エーアイのクラウドサービス担当開発者の指導の下、（ガチ文系営業担当の）戸田が実際にAITalkWebAPIをたたいてみたいと思います。（戸田のプログラミングレベルはpaiza年収249万円相当です。）

では今回は、**ブラウザ上でテキスト入力フォームを作って、そのままブラウザ上で音声再生する！！！** をつくっていく！！！

エーアイのHPに公開されている[AITalkWebAPIの仕様書](http://cloud.ai-j.jp/doc/aitalk_webapi_specification.pdf)を見ながらやります。

まずはhtmlでフォームを作ります。

```html:index.html
<!doctype html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>aitalkwebapi</title>
  </head>
  <body>
    <form action="sample_get.php" method="post">
      username<input type="text" name="username" value="" placeholder="ユーザー名">
      <br>
      password<input type="text" name="password" value="" placeholder="パスワード">
      <br>
      text<input type="text" name="text" value="こんにちは">
      <br>
      speakername<input type="text" name="speakername" value="nozomi_emo">
      <br>
      ext<input type="text" name="ext" value="mp3">
      <br>
      <input type="submit" name="" value="送信">
    </form>
  </body>
</html>
```

次にそのフォームに入れた内容について、phpで音声合成した結果をそのままブラウザで自動再生できるようにする！  
ブラウザはchrome（ver:70.0.3538.110）です。

```php:sample_get.php
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$text = $_POST['text'];
$speakername = $_POST['speakername'];
$ext = $_POST['ext'];

$response = file_get_contents('http://{AITalkWebAPIのホスト名}/webapi/v2/ttsget.php?username=' . $username .'&password=' . $password .
  '&text=' .urlencode( $text ) .'&speaker_name=' . $speakername .'&ext=' . $ext);
$file_name = 'output.mp3';
$result = file_put_contents($file_name, $response);

 ?>
 <!doctype html>
 <html lang="ja">
   <head>
     <meta charset="utf-8">
     <title>aitalkwebapi</title>
   </head>
   <body>
     <form action="sample_get.php" method="post">
       username<input type="text" name="username" value="" placeholder="ユーザー名">
       <br>
       password<input type="text" name="password" value="" placeholder="パスワード">
       <br>
       text<input type="text" name="text" value="こんにちは">
       <br>
       speakername<input type="text" name="speakername" value="nozomi_emo">
       <br>
       ext<input type="text" name="ext" value="mp3">
       <br>
       <input type="submit" name="" value="送信">
     </form>
<?php if ($result) {
 echo '<audio src="' . $file_name . ' " autoplay controls></audio>';
}
?>
   </body>
 </html>
```

で、できた～！！！最低限の設定して送信を押すと音声が自動再生しました！手取り足取り教えていただき、実作業1時間半くらいでできました。

よく音声再生のところの質問を頂くのですが、これは外部で実装していただく形になっています。  
今回は[HTML の 埋め込み音声要素](https://developer.mozilla.org/ja/docs/Web/HTML/Element/audio)を使って再生しました。

iOSのブラウザなどでは自動再生ができない仕様になっていたり、ブラウザごとに挙動が異なる可能性があるので、ご注意ください。 

## AITalkWebAPIのポイント
- AITalkは導入企業500社以上の実績
- [17種類の声が使える。](https://www.ai-j.jp/demonstration/)男女子ども、萌え系、関西弁（風）もなんのその。感情の調整もできます。（一部話者）
- 月額5,000円から使えます
- 単語登録もできます（※初期費用がかかります。）
- ssmlも使えるのでこちらでも修正できます！  
- サンプルもご準備！（ruby, python, php, javascript,swift etc...）


## AITalkWebAPI使ってみよう！その1
評価版が2週間無償で利用可能です！※ただし法人からの申込に限る。  

ご法人に所属の方、下記よりお申込みください。  
　**[2週間無償の評価版申込はこちら！](https://www.ai-j.jp/dl3/)**　　**[仕様書はこちら](http://cloud.ai-j.jp/doc/aitalk_webapi_specification.pdf)**

## AITalkWebAPIを使ってみよう！その2
ハッカソン用に無償アカウントをお出しすることも多いので、いろいろなハッカソンにて使ってみてください。  
【弊社ブログです。】[音声合成AITalkが利用できるハッカソンまとめ～2018年編～](https://www.ai-j.jp/blog/cate4/89/)  
こういうイベントがあるので協力してほしい！というお問い合わせも大歓迎です。  
主催の方との調整になるかとは思いますが、ご協力できる範囲でAITalkをご利用いただけるよう頑張ります。

## おまけ
最近よくAmazonpollyやGoogleの音声合成との違いはなにか？という質問をいただきます。  
pollyもgoogleも音質がとてもよいですよね。。。個人的にはLINEさんのclovaの声が好きだったりしますが…

個人的な見解にはなりますが、AITalkは日本語解析（読み、アクセント、間の付与）、イントネーション調整が簡単なところに強みがあるなと思っています。  
肉声の音声と比べ、機械音声（音声合成）だな、と違和感を感じるポイントには読み間違いやアクセント位置の間違い、句読点以外にどこで間を取るかといったところがあげられます。（もちろん単に音質という点もありますが）  
人が読み間違いを起こすように、音声合成も必ず読み間違いが起こってしまいますが、読み間違えた時の修正の容易さはAITalkのチューニングツールのおすすめポイントです。  
チューニングツールはデモで開放しているので、よければ触ってみてください(*'▽')  
http://cloud.ai-j.jp/webapi-demo/index.php

そのほかにも声の種類たくさんあるとか、何ならオリジナル音声辞書が作れるとか…まだまだおすすめポイントはありますが、ご興味ある方はお気軽にご連絡ください。