スキップしてメイン コンテンツに移動

投稿

6月, 2023の投稿を表示しています

SimpleVoxのあとがき

本文はなくてもあとがき はじめに M5Stack(ESP32)向けに SimpleVox というライブラリを開発しました。折角の記念に実装に当たってのこぼれ話のようなものを書いておこうと思います。 SimpleVoxは音声認識、とりわけ孤立単語音声認識(Isolated word recognition)の機能を提供するライブラリです。本ライブラリはVAD(Voice Activity Detection)、音声からのMFCC(Mel-frequency cepstral coefficients)の計算、および2つのMFCC間の距離を計算するためのDTW(Dynamic Time Warping)などの基本的な機能を提供します。 実際のところ、より優れた方法やアルゴリズムは他にも存在しますが、M5Stack(ESP32)のようなリソース成約のあるデバイスでの音声処理ライブラリは充実しているとは言えず、本ライブラリは選択肢の一つになるかと思います。 参考までに以下に紹介のあるESP-SRでは学習済みのモデルを使って200以上のコマンドを識別できるそうです。 Unleashing the Power of OpenAI and ESP-BOX: A Guide to Fusing ChatGPT with Espressif SOCs 本ライブラリでは同様のことを実現するのは難しいですが、自分のためのいくつかのコマンドに対応することは比較的容易です。したがって、一方は精度良く規模の大きな識別が可能だがトレーニングコストが大きい、もう一方は精度はそこそこでいくつかの識別しか出来ないがトレーニングコストは少ないといったトレードオフの関係にあるかと思います。 VAD VADは音声が存在する区間を検出する技術で、音声区間を予め検出することで、ノイズの除去、リソースの節約などの利点があり、音声セグメントの境界を正確に検出することで、音声認識の精度を向上させることに繋がります。 シンプルな実装としては信号のパワーとZero-crossingを用いた手法があり、元々ライブラリでも同様の手法を採用していたのですが、Espressifが公開していたESP-SRのVADがなかなか良かったことがあり、置き換えた経緯があります。 とはいえ、シンプルな実装もまるでダメってわけではなくて、意外と