BETA

ソツーのAIをテストできるウェブページを公開しました

投稿日:2019-02-18
最終更新:2019-03-13

初めまして、ソツーの開発をやっている大橋です。
このブログではソツー開発の途中経過を綴っていこうと思っています。

ところで、プロジェクトを簡単に紹介します。

ソツーはみんな(クラウド)の力でAIのトレーニングに必要なデータセットを作り上げ、そのデータセットを元に会話AIを作っちゃおうというプロジェクトです。
できる限り、オープンなものにしたいと思い、みんなの貢献を記録するところでブロックチェーンを使っています。

昨年秋にみなさんに声を貢献して頂けるアプリを公開し、2月17日現在11,050件(12時間7分49秒相当)のデータが集まっています。

会話できるAIを作ろうと思うと

  1. 人が喋ったことをテキストにする(音声認識)
  2. 認識したテキストを入力として、返信用テキストを出力する
  3. 返信テキストをナチュラルに読み上げる

というステップが必要になるのですが、現在はその一番最初の音声認識AIの開発中です。

詳細はこちらのウェブサイトでご確認ください。
https://appjp.sotuu.network/

ところで、本日はその記念すべき音声認識AIのビルド1をテストできるAPIを公開させて頂きました、というご報告です。

貢献して頂いた約1万件のデータを元にMozillaのオープンソースの音声認識AIモデルであるdeepSpeechに流し込んでみました。

deepSpeechは比較的シンプルなモデルで、3つのDenseレイヤー、1つのBidirectinalレイヤー、そして最後にもう一回Denseレイヤーがあります。

本来最初の3つのDenseレイヤーのニューロン数、及びBidirectionalレイヤーのRNNユニット数は2048なのですが、僕のマシンだとそれだけの数のパラメータを扱えなかったので、今回は代わりに494を採用しました。

494はdeepSpeechモデルをお試しでトレーニングさせてみたいっていう人向けのスクリプトで使われているパラメータです。

ログはこちら

実はできる限り数が多い方が良いだろうと思って768とかちょっと大きめの数字も試してみたのですが、768ではロスが全く下がってくれませんでした。なので、494という数字はMozillaのチームが色々な数字を試してみて、小さめだけど比較的良かった数値ということなんだと思います。

ところで、ちょっと前までは僕がUdacityのAI nano degreeのコースをとっていた時にそこで勉強した音声認識モデルをベースに開発をやっていました。
ご興味のある方はgithubにnotebookが上がってます。

このモデルはこのモデルでデータ量が少ない時はMozillaのdeepSpeechに負けない精度を出していたのですが、先日kerasをtf.kerasに移行してtensorflowの1.12.0で動くようにしたところロスがきちんと計算されなくなってしまいました。
具体的にはロスがいつの間にかnanになってしまいます。

tf.kerasのctc_batch_costにバグがあるのか、僕はtf.keras.modelsをカスタムモデルのテンプレートとして使っているのですが、それがちょっとマニアック過ぎて問題を引き起こしているのか謎ですが、最新のtensorflowで使えない、もしくはより多くのデータを投入すると使えないというのでは話にならないので、今回、清水の舞台から飛び降りる気持ちでdeepSpeechへスイッチしました。

ソツーは、モデルに関してはState-of-artのモデルがgithubに上がっていて、そこにみんなで集めた大量のデータを流し込むことで本当に良いAIができるっていうのがコンセプトでもあるので、githubに上がっている現存するstate-of-artモデルの一つであるdeepSpeechを使うのはコンセプトにも合っています。
英語だけど1,000時間をこえるデータを流し込んでかなり良い精度を実際に出せている実績があるってのも良いですしね。
※ より良いモデルの模索ももちろん継続はするつもりですけど

ところで、本題に戻りますが、精度はまだまだですが、今回トレーニングしたモデルをテストできるウェブサイトを公開します。

https://sotuu.network/apitest/

今後、性能が上がってきた時に過去のモデルと比較できるってのは面白いですし。

さて、今後の課題ですが、

  1. 現在acoustic model only になっているので、language modelを追加
  2. その後、かな漢字変換機能を追加
  3. で、それを外部から使えるようAPI化する

かなと思っています。

フィードバックを頂けたら嬉しいです。

英語でもたまにブログ書いてます。
ではまた。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@kouohhashiの技術ブログです。 主にAI、特に会話AIについて記事を書こうと思っています。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!