ailia Tech BLOG

ailia Audio : 音声の前処理・後処理を行うライブラリ

音声の前処理・後処理用のライブラリであるailia Audioのご紹介です。ailia Audioを使用することで音声AIのデバイス実装が容易になります。

ailia Audioの概要

ailia Audioはailia SDKに含まれる音声の前処理・後処理用のライブラリです。

ailia Audio

近年、音声分野でAIの利用が増加しています。具体的に、音声認識、音声合成、ピッチ推定、ノイズ除去などです。

しかし、音声を扱う場合、入力された音声波形にメルスペクトル変換を適用することが多く、この処理はAIモデルではなく、torch.audioやlibrosaなどの外部ライブラリで行われていました。

そのため、AIモデルはONNXに変換できるものの、iOSやAndroidで動かそうとした場合、メルスペクトル変換の前処理を独自に実装する必要がありました。メルスペクトル変換にはFFTなどの実装が必要であり、大きな工数が必要です。

ailia Audioはこの問題を解決するライブラリです。torch.audioやlibrosaと互換のメルスペクトル変換などの各種のAPIを提供することで、Pythonで書かれた音声処理のAIモデルを、簡単にiOSやAndroidで実装可能にします。

ailia Audioの利用例

音声認識モデルのWhisperは入力された音声波形から、log_melspectrumを計算する必要があります。ailia Audioにより、WhisperをiOSやAndroidに実装することが可能となります。

librosaによる実装

librosaでは、librosa.stft、librosa.filters.melを呼び出した後、log10を計算することで、log_melspectrumを計算します。

ailia-models/audio_processing/whisper/audio_utils.py at master · ailia-ai/ailia-modelsThe collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

ailia Audioによる実装

ailia Audioを使用すると、ailia.audio.mel_spectrogramを呼び出した後、log10を計算することで、log_melspectrumを計算可能です。

ailia-models/audio_processing/whisper/ailia_audio_utils.py at master · ailia-ai/ailia-modelsThe collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

ailia AudioのBinding

librosaやtorch.audioはPythonで実装されています。ailia AudioはC++で実装しているため、C++、ObjectiveCからネイティブアクセスが可能で、さらに、C#やDartからはFFIを通じてアクセス可能です。また、検証用にPythonのBindingも提供しています。そのため、ailia SDKと同様に、あらゆるプラットフォームで使用可能です。

ailia AudioのAPI

ailia Audioには下記の音声処理が実装されています。

・FFT、IFFT
・Spectrogram、InverseSpectrogram
・MelSpectrogram
・MagPhase、Standardize、ComplexNorm、ConvertToMel、dB
・Resample
・LinearFilter、LinearFilterZiCoef、FIlterFilter

下記にC++のAPIが規定されています。

ailia: ailia_audio.h File Referenceaudio processing library More... audio processing library Create a mel filter-bank. Get the number of frames generated…ailia-ai.github.io

下記にPythonのAPIが規定されています。

ailia.audio package - ailia Python API 1.2.9 documentationEdit descriptionailia-ai.github.io

ailia Audioのサンプル

下記にC++やUnityからailia Audioを使用するサンプルがあります。

GitHub - ailia-ai/ailia-audio-samples: ailia.audio samples of unityailia.audio samples of unity. Contribute to ailia-ai/ailia-audio-samples development by creating an account on GitHub.github.com

Pythonからailia Audioを使用するサンプルはailia MODELSにあります。ailia MODELSの場合、librosaやtorch.audioと切り替えられるように両方の実装があるため、librosaやtorch.audioをどのようにailia Audioに移植するかの参考に、両方の実装を見比べることも可能です。ファイル名に_ailiaが付いているのがailia Audioを使用したもの、付いていないものが元のlibrosaやtorch.audioの実装です。

CRNN Audio Classification(音声分類)

ailia-models/audio_processing/crnn_audio_classification/crnn_audio_classification_util_ailia.py at…The collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

ailia-models/audio_processing/crnn_audio_classification/crnn_audio_classification_util.py at master…The collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

Pytorch DC TTS(音声合成)

ailia-models/audio_processing/pytorch-dc-tts/pytorch_dc_tts_utils_ailia.py at master ·…The collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

ailia-models/audio_processing/pytorch-dc-tts/pytorch_dc_tts_utils.py at master ·…The collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

Whisper(音声認識)

ailia-models/audio_processing/whisper/ailia_audio_utils.py at master · ailia-ai/ailia-modelsThe collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

ailia-models/audio_processing/whisper/audio_utils.py at master · ailia-ai/ailia-modelsThe collection of pre-trained, state-of-the-art AI models for ailia SDK …github.com

まとめ

ailia Audioを使用することで、音声処理を行うAIモデルを、iOSやAndroid実装が可能です。アイリア株式会社ではお客様のモデルをiOSやAndroidに移植するサービスも行っているため、ご興味のある方はアイリア株式会社までお気軽にお問い合わせください。


アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。