音声認識サービスの精度評価をしたかった その3

公開日:2018-11-28
最終更新:2018-11-29

はじめに / Introduction

この記事はその2の続きです。

This page picks up where I left off.
Please read it if you want to know backbround on this.

実装で大変だったこと / confused point in coding

ja-JP

比較するサービスも評価方法も決まったので、いざAPI叩くぞ!と思ったら結構つまづきました。
なお、以下に記載する情報は2018/11/27時点のものです。利用時は必ず公式ドキュメントを参照ください。

音声ファイルの扱い

各サービスで、扱える音声ファイルが微妙に異なりとても面倒でした。
対応表をまとめると以下の通り。基本的にはwav(LINEAR PCM モノラル 16bit), 16000Hzで録音するのがよいです。

相違点 Google Microsoft Amazon
音声ファイル形式 wav(LINEAR PCM), flac, ogg, etc... wav(LINEAR PCM) wav(LINEAR PCM), flac, mp3
サンプリングレート(Hz) 8000 - 48000 16000 8000 - 48000
ステレオ / モノラル 両方 モノラルのみ 両方

あとから知ったのですが、音声認識系では上記設定の音声ファイルを使うのがデファクトスタンダードのようです。
iPhoneのデフォルト録音アプリだとm4aでしか録音できないので、おとなしく別の録音アプリを使いましょう。

開発可能言語

「音声認識ならpythonだろ」と思っていましたが、そうでもなかったです。
なお、どのサービスもCLIとREST APIは利用可能です。

  • Google: python, ruby
  • Microsoft: C++, C#, java, objective-C, javascript
    • 環境によって使える言語が異なります。詳しくは参考リンク参照。
    • 最終的にはjavaで書きました。
  • Amazon: python
    • これはweb上で試していたので実装してないです。

特にMicrosoftが鬼門で、MacとWindows双方で実行できるのはC++かjavaしかありません。
さらにjavaのサンプルコードはEclipse + Mavenを使ったものしかなく、デファクトスタンダードになりつつあるintelliJ(Android Studio) + Gradleの情報は完全に手探りです。
(リポジトリからデフォルトではaarが参照されるあたり、javaを用意しているのはAndroid開発のためだと思うのですが。。。)
なお、最終的にbuild.gradleには以下を追加しました。

repositories {
    mavenCentral()
    maven {
        url 'https://csspeechstorage.blob.core.windows.net/maven/'
    }
}

dependencies {
    compile(group: 'com.microsoft.cognitiveservices.speech', name: 'client-sdk', version: '1.0.1', ext: 'jar')
    // others
}

アウトプット形式

REST APIを使えばどのサービスもjsonで結果が返却されるのですが、各種サンプルコードをベースに実装するとアウトプットの形を合わせなければならず骨が折れました。
試行錯誤の結果、今はこのような形に落ち着いています。
時間があれば、replace_patternsのdel_patternとins_patternにlistを渡せるようにしたいですね。

最後に

今回は複数サービスを使う上で大変だったことをまとめました。
次回はいよいよ評価結果をまとめたいと思います。

en-US

I want to use APIs immediately because I decided to use services and evaluation method in the previous article, but it is not realized.
Confused points and solutions are written in below (as of 27/11/2018).
Please check the latest information in official documents.

Audio file format

It is too much hassle to differ available audio file format between each service.
Detail is as follow. As a result, you should record by wav(LINEAR PCM, mono 16bit), 16000Hz.

Diff point Google Microsoft Amazon
File format wav(LINEAR PCM), flac, ogg, etc... wav(LINEAR PCM) wav(LINEAR PCM), flac, mp3
Sampling rate(Hz) 8000 - 48000 16000 8000 - 48000
Stereo / Monaural Both Monaural Both

I knew after evaluation, the above setting is a defacto standard in neural-network(NN) area.
If you use iPhone, you record only m4a format so download another application.

Programming language

I thought that "defacto standard is Python in NN", but it is wrong.

  • Google: Python, Ruby
  • Microsoft: C++, C#, Java, Objective-C, JavaScript
    • It is decided by OS. Please check the official document.
    • I used java.
  • Amazon: python
    • I don't write any code because of using web UI.

Especially, Microsoft confused me.
Only C++ and Java can run both Mac and Windows.
In addition, Java samples use not IntelliJ(Android Studio) + Gradle but Eclipse + Maven, so I had to surf the Internet.
(I guess Java samples are ready for developing Android application because Maven gets aar library in a repository... )

Finally, I added settings to build.gradle in below.

repositories {
    mavenCentral()
    maven {
        url 'https://csspeechstorage.blob.core.windows.net/maven/'
    }
}

dependencies {
    compile(group: 'com.microsoft.cognitiveservices.speech', name: 'client-sdk', version: '1.0.1', ext: 'jar')
    // others
}

By the way, every service can use CLI and REST API.

Output format

It was quite hard to match output format because I used samples due to comparing results.
Of course, every service response JSON if you use REST API, so maybe you use a JSON parser.

Now, I use like this through trial-and-error.
I wish I refactor it to use list as a del_pattern and ins_pattern in replace_patterns.

To close

I summarized hard points to use multiple services.
In the next, I will write the results of the evaluation.

参考リンク / References

記事が少しでもいいなと思ったらクラップを送ってみよう!
39
+1
@tmyoasの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする