【音声文字変換】ailia SDKでWhisper他モデル実践 〜Mac×Pythonで10分実装~

音声文字変換(speech to text)の実装には様々なサービスがありますが、ailia SDKを使えば複数のモデルを数分で簡単に試すことができます。

この記事は、以下のような方におすすめです:

● 音声文字変換の各種モデルを実際に試してみたい方
● プログラミング初心者でAIに興味がある方
● 音声文字変換を自社サービスに組み込みたい方

本記事では、Apple Silicon搭載Macで、Pythonを使って環境構築から複数の音声文字変換モデルの実践までを10分で実装する手順を解説します。

1. ailia SDKとは?

AIモデルの実装を簡単に行えるSDKです。以下の特徴があります:

  • 高速な推論エンジンによる、スムーズな実行
  • 画像認識、物体検出、姿勢推定など、370以上の豊富な事前学習済みモデル
  • Mac、Windows、Linux、組み込みボード(Jetson、Raspberry Pi)まで対応したクロスプラットフォーム
  • 多言語対応(Python/C++/Unity(C#)/Java(JNI)/Kotlin/Rust/Flutter)
  • GPU対応(CUDA、Vulkan、Metal)

2. 環境構築(所要時間:約2分)

動作条件

  • Python 3.6 以降

インストール手順

  1. まず、ailia SDKをインストールします:
    pip3 install ailia
  2. サンプルコードをダウンロードして、移動します。:
    git clone https://github.com/axinc-ai/ailia-models
    cd ailia-models
  3. 依存ライブラリをインストールします:
    pip3 install -r requirements.txt
    pip3 install -r audio_processing/requirements.txt

3. 標準的なwhisperモデル(所要時間:約3分)

  1. 概要:
    • 標準的なwhisper モデルを使って、音声データからテキスト出力ができます。
  2. 環境を整えます:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。
      cd audio_processing/whisper
    • 次に、以下のコマンドで、環境を整えます。
      pip3 install librosa
      pip3 install pyaudio
    • 補足
      • pyaudioのインストール時に「portaudio.h file not found」というエラーが発生した場合は、以下のコマンドを試してみてください:
        export CFLAGS="-I/usr/local/include"
        export LDFLAGS="-L/usr/local/lib"
        pip3 install pyaudio
      • CFLAGSとLDFLAGSの設定: PortAudioライブラリが標準の場所にインストールされていない場合、コンパイラにヘッダーファイルとライブラリファイルの場所を伝える必要があります。CFLAGSとLDFLAGS環境変数を設定することで、これを実現できます。/usr/local/includeと/usr/local/libは、PortAudioライブラリがインストールされている場所に合わせて変更してください。
  3. サンプル音声で試してみましょう:
    • 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
      python3 whisper.py
    • 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
      [00:00.000 --> 00:10.000]  He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered, flour-fattened sauce.
  4. 自分の音声データで試してみましょう:
    • ご自身の音声データを audio_processing/whisperフォルダに test.m4a として保存してください。その後、以下のコマンドを実行します。
      python3 whisper.py --input test.m4
    • 無事に実行されれば、下記のように、テストデータの出力をターミナル内で確認できるはずです。
      [00:00.000 --> 00:04.000] マイクテスト、マイクテスト、これはマイクテストです
  5. いくつかのオプションを試してみましょう:
    • model_type オプションを追加すると、モデルタイプを「tiny」、「base」、「small」、「medium」から選択して指定できます。(デフォルトは base)
      python3 whisper.py --model_type small
    • task translate オプションを指定すると、英語に翻訳できます。
      python3 whisper.py --task translate
    • V オプションを指定すると、マイクからの入力モードになります。ターミナルに「Please speak something (何か話してください)」と表示されている時にマイクに向かって話します。約 0.5 秒の無音の後に録音を終了し、音声認識を行います。予測結果を表示した後、再び「何か話してください」の待機状態に戻ります。終了する場合は Ctrl+c を入力します
      python3 whisper.py -V

4. 軽量のwhisperモデル(所要時間:約3分)

  1. 概要:
    • Distil-Whisperは、Whisperの軽量化版モデルです。主な特徴は:
      • 軽量化:元のWhisperモデルと比較して、パラメータ数が大幅に削減されています。これにより、モデルのサイズが小さくなり、メモリ使用量や計算コストが低減されます。また、軽量化により、リソースが限られた環境(例えば、モバイルデバイス・組み込みシステム・リアルタイム音声認識・リソース制約のある環境など)でも音声認識を実行しやすくなります。
      • 高速化:モデルの軽量化に伴い、推論速度が向上しています。これにより、リアルタイムに近い音声認識が可能になります。また、高速化は、大量の音声データを処理する際にも役立ちます。
      • 性能維持:軽量化と高速化を実現しつつ、元のWhisperモデルと同等の音声認識精度を維持するように設計されています。これにより、性能を犠牲にすることなく、より効率的な音声認識が可能になります。
      • 知識蒸留:Distil-Whisperは、知識蒸留という技術を用いて学習されています。これは、大きなモデル(教師モデル)の知識を小さなモデル(生徒モデル)に転移させる手法です。この手法により、軽量なモデルでも高い性能を発揮できます。
  2. 環境を整えます:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。
      cd audio_processing/distil-whisper
    • 次に、以下のコマンドで、環境を整えます。
      pip3 install soundfile
  3. サンプル音声で試してみましょう:
    • 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
      python3 distil-whisper.py
    • 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
      [00:00.000 --> 00:10.000]  He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered, flour-fattened sauce.
  4. 自分の音声データで試してみましょう:
    • ご自身の音声データを audio_processing/distil-whisperフォルダに test.wav として保存してください。なお、先ほどインストールしたsoundfile ライブラリは、m4a 形式のファイルを直接サポートしておらず、wav, flac, ogg などの形式をサポートしているので、同形式へ変換する必要があります。変換には、ffmpeg などのツールを使用できます。
      ffmpeg -i test.m4a test.wav
    • その後、以下のコマンドを実行します。
      python3 distil-whisper.py --input test.wav

5. 日本語に最適化されたwhisperモデル(所要時間:約2分)

  1. 概要:
    • Kotoba-Whisperは、日本語の音声認識に最適化されたモデルです。
  2. 環境を整えます:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。
      cd audio_processing/kotoba-whisper
    • 次に、以下のコマンドで、環境を整えます。
      pip3 install librosa
  3. サンプル音声で試してみましょう:
    • 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
      python3 kotoba-whisper.py
    • 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
      INFO kotoba-whisper.py (664) : ちょっと見ていきましょう。
  4. 自分の音声データで試してみましょう:
    • ご自身の音声データを audio_processing/kotoba-whisperフォルダに test.wav として保存してください。その後、以下のコマンドを実行します。
      python3 kotoba-whisper.py --input test.wav

6. まとめ

わずか10分で、Whisperとその派生モデルによる音声文字変換を実装できました!

ailia SDKでは、この他にもdeepspeech2、reazon_speech、reazon_speech2など、複数の音声文字変換モデルを試すことができます。370以上の事前学習済みモデルを活用でき、画像認識、物体検出、自然言語処理など幅広い分野に対応しています。

「高速」「使いやすさ」「豊富なモデル」を特徴とするailia SDKは、AIを実装する際の強力なツールとなるでしょう。ぜひ、ご自身の開発プロジェクトでお試しください。

7. 参考リンク

土橋克寿

証券会社、ビジネス誌副編集長を経て2013年に独立。欧米中印のスタートアップ取材や、各国首脳・テック企業幹部へのインタビューを多数実施。Yahoo!ニュース エキスパートなど国内外メディアで執筆。2018年より株式会社クロフィー代表取締役として、AI開発・PRコンサルティングなどを手掛ける。
https://news.yahoo.co.jp/expert/authors/dobashikatsutoshi
https://x.com/dobatty

SHARE THIS ARTICLE