LoginSignup
13
5

More than 3 years have passed since last update.

M5Atom EchoでSpeech to Textやってみた

Last updated at Posted at 2020-12-14

この記事は2020.12.05【2020年最後!】IoT縛りの勉強会! IoTLT vol.70で登壇した内容の補足的な話です。
スライドはこちら

ここ最近M5シリーズいろんなものが次から次へとリリースされてもう情報が追いつきません。
その中で僕が密かに興味があるものが「M5Atom Echo」。
いろいろ調べてみるとスマートスピーカーを作れるマイコンらしいです。
なのにググっても出てくるのはスピーカーのことばかり(どんだけスピーカーこだわるんだよ!)。
やっぱり長時間使えないスピーカーなんかの事言うより音声認識をやりたいわけです。
というわけで今回はM5Atom Echoを使ってSpeech to Text(以下、STT)をやる方法を紹介します。

トークンの取得

M5Atom Echoには専用のSTTライブラリが提供されています。
そのライブラリの裏側ではBaiduのAPIを使っているそうです。
じゃあBaiduのサイトで取得するのかと言うとそういうわけではないようです。

以下のサイトにM5Burnerのダウンロードリンクがあるので、お使いのOSに合わせてダウンロードとインストールします。

ダウンロードを終えたらATOMオプションを選択してEchoSTTをダウンロードします。
その後、Get Tokenをクリックしてアクセストークンを入手します。

m5burner.png

Arduinoで動かす

今回はArduinoを使ってSTTをやってみます。

ボードマネジャー

まず、ボードマネジャーはM5Stick Cと同じチップをつかっているので、M5Stick Cのボードを選択します。

ライブラリのインストール

次にM5AtomライブラリとFast LEDライブラリをインストールします。
「スケッチ」→「ライブラリをインクルード」→「ライブラリの管理」を開き、それぞれのライブラリをインストールします。

サンプルコード

以下のリンクのサンプルコードをすべて任意のディレクトリに保存します。
const char *WifiSSID = "SSID";const char *WifiPWD = "PASSWORD";にはお使いのWifiのアクセス情報に書き換えます。
rest.settoken("YOUR-TOKEN");には先程M5Burner取得したトークンに書き換えます。

動作確認

官話(中国の公用語)を認識するためのモデルなので、英語の認識はHelloなどの簡単な英単語は認識しますがそれ以外は官話で認識します。

他の言語に切り替える

先程の官話だと、分かる人なら問題ないですが、日本人だとわからない人が多いと思います。
せめて英語を認識できるようにできないかソースを調べたところ、どうやらヘッダーファイルの変数を指定すれば言語モデルを変更できるようです。
image.png
BaiduRest.hより

ヘッダーファイルを確認すると、官話、広東語、英語、広東語と英語の両方というモデルを指定できるみたいです。
僕は英語を認識できればそれでいいので、DEV_PID_ENGLISHを設定します。
ではこの設定を変更するにはどうすればいいのかというとEchoSTT.inoの136行目のrest.Pcm2String(microphonedata0, data_offset, DEV_PID_MANDARIN, &SpakeStr) != -1にあるDEV_PID_MANDARINDEV_PID_ENGLISHに変更するだけです。

再度動作確認

先程と違って英語をきれいに認識するようになりました。

まとめ

今回はM5Atom Echoをつかって音声認識をやってみました。
最初は「英語うまく認識できないけど、動いているからヨシッ」ってなりましたけど、ソース調べると英語を変更にできることがすんなり分かって拍子抜けしましたw。
ただ、これは偶然気づいただけでちゃんとドキュメントに書くべきじゃね?とは思いました。(気が向いたらPRだしたい)

13
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5