XMOS社のマイクアレイを使って、ファーフィールドの自作Alexa端末を試してみる

![xmos1.jpg](https://qiita-image-store.s3.amazonaws.com/0/99911/e2950d98-a113-3205-ff23-f30328dcb564.jpeg)

## 音声認識端末を作ってみたい
音声認識を作ってみたい。部屋のどこからでも、またある程度騒がしくても音声認識させたい。

音声認識のシステムは、Amazonの「[Alexa Voice Service](https://developer.amazon.com/ja/alexa-voice-service)」のSDKを使えばRaspberry Piで簡単に自前のAlexa端末を作って試すことができる。

「[Alexa Voice Service](https://developer.amazon.com/ja/alexa-voice-service)」を使うとき、自分の音声認識システムを「タッチで開始」「ハンズフリー(近距離)」「ファーフィールド」の3つに分類することになる。このとき、部屋のどこからでも声をかけたいので「ファーフィールド」という範疇になり、そうするとマイクロフォンアレイを使ったHW構成一択になるようだ。

Amazonの日本語版開発ドキュメントでは、 [Amazon AVS 開発キット](https://developer.amazon.com/ja/alexa-voice-service/dev-kits) にFar Fieldのキットが2つ紹介されている。
- [Synaptics 4-Mic Far-Field](https://developer.amazon.com/ja/alexa-voice-service/dev-kits/conexant-4-mic/)
- [Amazon Alexa 7-Mic Far-Field](https://developer.amazon.com/ja/alexa-voice-service/dev-kits/amazon-7-mic)

またもう一つ、XMOS社もあるようだ。多分新しいのか、まだ日本版の開発ドキュメントにはないようだが、ロボスタのまとめにはすでに詳しく紹介されている。
- [【Alexa搭載デバイス開発向け】Amazon voice service (AVS) 開発キットまとめ](https://robotstart.info/2017/10/20/development-kits-for-avs.html) 〜とても詳しいまとめです。
- [New XMOS Dev Kit for AVS Brings Far-Field Voice Capture to a Linear Mic Array](https://developer.amazon.com/ja/blogs/alexa/post/edde861e-65a4-4319-b5f1-422b0c626673/xmos-expands-device-types-supported-by-dev-kits-for-avs-with-a-far-field-linear-mic-array-based-reference-solution)
- [ITPro記事: 英XMOS、Amazon Alexa Voice Service向け開発キットを提供](http://itpro.nikkeibp.co.jp/atclact/activer/nkpr/RSP459873_11102017/)

XMOS社のキットは、マイクを直列に4つ配置できる。円盤に配置されたキットは設置の面で制約が大きいのに比べて、これなら何かに組み込むのも自然な見た目になるのではないかということもあり、このキットで試してみることにした。

※ただし高かった。[Digi-Keyで約6万円](https://www.digikey.jp/product-detail/ja/xmos/XK-VF3000-L33-AVS/880-1126-ND/7681895)…、今なら[Amazonで注文すれば$499](https://developer.amazon.com/ja/alexa-voice-service/dev-kits/xmos-vocal-fusion)みたいだ。

---
## マイクロフォンアレイ技術とは?
[音声強調](https://ja.wikipedia.org/wiki/%E9%9F%B3%E5%A3%B0%E5%BC%B7%E8%AA%BF)の方法の一つで、雑音や反響音を抑制する技術。

音のノイズ除去は、簡単に考えるとノイズの成分だけローパスフィルターやハイパスフィルターでカットすればいい。しかしこうやって周波数をまるごと削ると、必要な音声まで削られてしまったり、影響が大きい。そこで複数のマイクの入力を使って、その差分をとったりすることで効果的に聞きたいところだけ強調できる。

Amazon Echoにも、その他のシステムにも使われていて十分に実績があって使い物になるようだ。

欠点としては複数のマイクとその信号を処理する必要があるので、どうしても安くはならないようで、スマートスピーカーのような専用端末以外で見かけないのはそのせいだろうか。

## HWのセットアップ
XMOSからgithubで提供されるドキュメントに従って素直にセットアップできた。評価キットにはRPiもマウントできるようになっていて、必要なケーブルも同梱されているので、普通にRPiが動くセットと組み合わせて完了。

- [xCORE VocalFusion 4-Mic Kit for AVS and Amazon Alexa Voice Services SDK on a Raspberry Pi](https://github.com/xmos/vocalfusion-avs-setup)

![xmos2.jpg](https://qiita-image-store.s3.amazonaws.com/0/99911/ca50902d-3ee1-9927-43ae-6698282c8c14.jpeg)

## ソフトウェアをインストール
ソフトウェアには、2つの選択肢がある。Amazonの[AVS SDK](https://github.com/alexa/avs-device-sdk/wiki)をそのまま使うか、[XMOSのSDK](xCORE VocalFusion 4-Mic Kit from XMOS)を使う。

結局どちらも一台に同居してインストールすることが出来た(と思う)。

### AVS SDKをそのまま使う場合
日本語でAlexaできます。Amazonのドキュメントに加えて、日本語化にトライされた方の記事がそのまま動きました。

- [AmazonのRPi用クイックスタート](https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide)
- [alexa-avs-sample-appを日本語に対応させる](https://qiita.com/moritalous/items/a3e847612dd2bf4fed99) ~ の手順で日本語化できました、ありがとうございます!

### XMOSのインストーラーを使う場合
※私の環境では※ 英語のままになりました。[XMOSのSDK](xCORE VocalFusion 4-Mic Kit from XMOS)の手順で素直にインストールが進むので、使う事自体は問題ないです。

※ 言語設定はAmazon開発者コンソールまたは周辺の設定に依存する様子です。

Amazonの上記の手順で一度インストールした環境にインストールすることができました。そうすると、ハードは一台ですが、二台のAlexaとしてAlexaダッシュボードで認識されていることを確認しました。２つのソフトウェア環境別でセットアップされたようです。

私の環境で英語になってしまったので、日本語化にも少しだけトライしましたが、XMOSの環境では成功できませんでした。

## デモ
1. [YouTube: DIY Alexa w/ XMOS Kit 日本語で使ってみる1](https://youtu.be/U9b0sKCZd-w)
XMOSを使ってみる。
Wake wordの認識は、まだXMOSをちゃんと使いこなせていないようだ。その後の質問は、噛んでいるにもかかわらずちゃんと取れている。何度か質問してみたが問題ない。

2. [YouTube: DIY Alexa w/ XMOS Kit 日本語で使ってみる2](https://youtu.be/iSthyNRU9j8)
XMOSは離れても使える?
Wake wordの後なら、かなり離れていてもちゃんと認識できる。あえて早口で質問、問題ない。

## まとめ
XMOSのキットを使って、ファーフィールドマイクとして使うことができました。日本語化した自前デバイスのAlexa、部屋の隅からでも使えていて結構感動です。

ただ、自分のAlexa、残念ながら日本語のスキルがインストールできない…日本のサービスを使ったらもっと便利だろうなということは想像に難くないので、早く招待されることを待つのみです…。