マルツTOP > Infineon > AMAZON AVS向け開発キット

インフィニオンXENSIV™ MEMSマイクロホンを搭載した、AMAZON AVS向け音声アシスタント開発キットを使って、スマート音声アシスタントのアプリケーションを作成する事例をご紹介します。


MEMSマイクロホン IM69D130についてはこちらもご覧下さい。

Raspberry Piとスマート音声アシスタントアプリケーションによる迅速なプロトタイプの作成

Digi-Key's North American Editorsのご提供
Digi-Key Publish Date 2018-02-01
マルツオンライン掲載日 2018-07-04

 Amazon EchoやGoogle Homeといった人気のあるスマート音声ベースの製品のおかげで、音声アシスタントは、製品における重要な機能として注目されています。AmazonやGoogleなどの音声サービスプロバイダは、音声認識や音声解析について熟練していなくても開発ができるように、アプリケーション・プログラミング・インターフェース(API)を提供していますが、音声ハードウェアと音声処理ソフトを組み合わせるための技術は依然として難しいものです。

 さらに、音響設計やオーディオエンジニアリング、クラウドベースのサービスなどの経験がないプロジェクトは、それぞれの分野に関連する情報を得るために大幅な時間がかかる可能性があります。

 XMOS社の音声アシスタント開発キットは、これらの問題に対処するために開発されました。そこでここでは、Amazon Alexa Voice Service(AVS)とGoogleアシスタントをベースにした製品を迅速に開発できるXMOS社の音声アシスタント開発キットについてご紹介します。本ボードは、Raspberry Pi 3とインターフェースするように設計されています。

 本稿では、この音声アシスタント開発キットを稼動させる方法と、どのように音声アシスタント技術を容易に利用できるようにするかについて解説します。

Amazon Alexa Voice Service(AVS)の迅速な評価

 Amazonは、過去においてAlexa smart speakerとして、スマートフォンで使えるスマート音声アシスタント機能を備えた家庭向け製品を発表しました。開発者にとって、Amazonが提供するAVS APIは、カスタムシステムで音声アシスタント機能を使用するという扉を開きましたが、依然として音声ハードウェアとソフトウェアに関する高度な専門知識が必要でした。それが今や、Amazon AVSのXMOS xCORE VocalFusion 4-Micキットを入手しさえすれば、誰でも音声アシスタント機能を実装することができるようになりました。

 XMOSキットには、XVF3000プロセッサベースボード、4個のインフィニオンIM69D130 MEMSマイクロホンを使った100mmリニアマイクアレイ、xTAGデバッガ、マウントキット、およびケーブルが含まれています。これらを使って開発する際は、Raspberry Pi 3に電源内蔵スピーカーとUSB電源、USBキーボード、マウス、モニター、インターネットなどを接続します。プロセッサベースボードとマイクアレイを取り付け、図1に示すようにRsspberry Pi 3に接続すれば、すぐにAmazon Alexaの音声アシスタント機能を利用できるようになります。

図1:マイクアレイ(左端)とプロセッサベースボード(中央)をRaspberry Pi 3(右)に差し込んで、XMOS xCORE VocalFusionキットの作業を開始する(画像ソース:XMOS)

 Raspberry Pi 3にUSBキーボード、マウス、モニター、インターネットなどを接続した後、マイクロSDカードからRaspbianOSをインストールし、Raspberry Pi 3にターミナルを開き、XMOS VocalFusionリポジトリをインストールします。OSとリポジトリがインストールされたら、コピーしたvocalfusion-avs-setupディレクトリにあるインストールスクリプトauto_install.shを実行するだけです。

 このインストールスクリプトは、RaspberryPiオーディオシステムとxCORE VocalFusionキットとを接続し、AVS Device SDKをRaspberry Pi 3にインストールします。このインストールプロセスは、完了するまでに約2時間かかります。

 インストールが完了したら、Amazon開発者の資格情報を読み込んで、広範な音声コマンドと組み込み機能をテストしてください。この時点で、XMOSキットは、Alexaスキルキットを使って構築されたサードパーティ製の機能と同様に、タイマ、アラーム、カレンダーなどのAlexaのすべての機能を使うことができるようになります。

リファレンスデザイン

 シンプルなセットアップ手順を選択すると、XMOSキットのハードウェアおよびソフトウェアコンポーネントを使用できます。このキットは、開発者にカスタムデザインの実装に関する包括的なリファレンスデザインを提供します。 XMOSキットの中心となるXMOS XVF3000-TQ128デバイスは、高い処理能力を有しています(図2)。

図2:XMOS XVF3000-TQ128は、高性能なオーディオ処理を行うために8つのコアを持つxCOREタイルを2系統搭載している(画像ソース:XMOS)

 並列処理用として構築されているこのデバイスには、I/O、256KBのSRAM、8KBのワンタイムプログラマブル(OTP)メモリを備えた32ビットxCOREコアを8個搭載したxCOREタイルが2系統含まれています。xTIMEスケジューラはコアを管理し、I/Oピンからのハードウェアイベントによりコアを起動します。各コアは、xCORE VocalFusionキットでプリフラッシュされた2MBフラッシュメモリを利用し、キットに実装されている実行コードとデータを使用して、演算や信号処理、制御タスクを独立して実行することができます。

 XMOSプロセッサベースボードにはXVF3000-TQ128デバイスが搭載されていますが、これに追加する要素はほとんどありません(図3)。基本的なバッファとヘッダ接続に加えて、ベースボードには、外部スピーカでオーディオ出力を生成するCirrus Logic社のD/AコンバータCS43L21も含まれています。さらに、ベースボードは、XVF3000-TQ128デバイスのI2Cポートと、デジタルオーディオ用のオーディオに最適化されたI2Sインターフェースを搭載しています。

図3:XMOSキットのベースボードには、XVF3000-TQ128デバイス、DAC、バッファ、およびRaspberry Pi 3ボードと外部スピーカーに接続するためのヘッダが含まれている(画像ソース:XMOS)

 このキットは、全体の機能をXMOSベースボード上の音声処理とRaspberry Pi 3(図4)上の高度な音声処理サービスとに分割します。 Raspberry Pi 3のBroadcomクアッドコアプロセッサは、起動用単語を認識するために音声を分析し、Amazon AVSとの対話を処理するソフトウェアを実行します。

図4:XMOS VocalFusionキットは、Alexaの機能をベースボードとRaspberry Pi 3ボードに分離しています。前者は音声信号処理用、後者は音声認識用、上位レベルのAlexaサービス用である(画像ソース:XMOS)

 ソフトウェアのインストールプロセスでは、これらのサブシステムが構成され、話す人の感覚に依存しないウェイクワードエンジンやAVSクライアントソフトウェアなど、必要なソフトウェアパッケージがロードされます。

 AVSは、音声認識や音声再生、音量制御などの高水準な機能に関するインターフェースを提供します。オペレーションは、AVS(ディレクティブ)からのメッセージとクライアントからのメッセージ(イベント)を介して処理を進めます。例えば、何らかの状態に応答して、AVSはオーディオを再生したり、アラームを設定したり、ライトをオンにするような指示をクライアントに送信することがあります。逆に、クライアントからのイベントにより、ユーザーから新たな発声を要求するなどの何らかの事象をAVSに通知します。

 AVS Device SDKに含まれているサンプルには、デバイス・クライアントの作成方法やウェイク・ワード・インタラクション・マネージャー(リスト1)などの主要な設計パターンが示してあります。ここでは、一連のサンプル・サービス・ルーチンとともに、メイン・プログラムがサンプル・アプリケーション・オブジェクトsampleApplicationをインスタンス化するために必要なプログラムを掲載します。これは、以下に示す単純なコマンドで起動することができます。

図5:Amazon AVS Device SDKは、AVSの幅広い機能を独自のインターフェースとライブラリを持つ別々の機能領域に編成している(画像ソース:AWS)

 AVS Device SDKに含まれているサンプル・アプリケーションでは、デバイス・クライアントの作成やウェイク・ワード・インタラクション・マネージャー(リスト1)などの主要な設計パターンが示してあります。ここでは、一連のサンプル・サービス・ルーチンとともに、メイン・プログラムがサンプル・アプリケーション・オブジェクトsampleApplicationをインスタンス化するために必要なメインプログラムを掲載します。以下のような単純なコマンドで起動することができます。

sampleApplication->run().

/*
 * Creating the DefaultClient - this component serves as an out-of-box default object that instantiates and "glues"
 * together all the modules.
 */
    std::shared_ptr client =
        alexaClientSDK::defaultClient::DefaultClient::create(
            m_speakMediaPlayer,
            m_audioMediaPlayer,
            m_alertsMediaPlayer,
            speakSpeaker,
            audioSpeaker,
            alertsSpeaker,
            audioFactory,
            authDelegate,
            alertStorage,
            settingsStorage,
            {userInterfaceManager},
            {connectionObserver, userInterfaceManager});
 . . .

    // If wake word is enabled, then creating the interaction manager with a wake word audio provider.
    auto interactionManager = std::make_shared(
        client,
        micWrapper,
        userInterfaceManager,
        holdToTalkAudioProvider,
        tapToTalkAudioProvider,
        wakeWordAudioProvider);

 . . .

    client->addAlexaDialogStateObserver(interactionManager);

    // Creating the input observer.
    m_userInputManager = alexaClientSDK::sampleApp::UserInputManager::create(interactionManager);

 . . .

void SampleApplication::run() {
    m_userInputManager->run();
}

リスト1:AVS Device SDK C++のサンプルを使用してデバイスのAVSクライアントを拡張することができる。ここでは、AVSクライアント、Wake-Wordインタラクションマネージャー、ユーザー入力マネージャーを作成するための主要な設計パターンを示す(ソースのリスト:AWS)

結論

 最近まで、スマートな音声アシスタントは、一流の開発者以外にとっては手の届かないところにありました。しかし、キットが生まれたことにより、開発者は迅速にAmazon Alexaのソフトウェアを基本的なプロトタイプでカスタムしたり、ハードウェアのデザインを変えたりすることができるようになりました。

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   

ページトップへ