ReazonSpeechとWhisperで音声認識_Google Colaboratory上での実装
前書き
音関連のタスクと何かと縁のあるAIエンジニアです。
初めて勉強した時は信号処理(周波数解析)の理解に苦しんだ思い出があります(^^;
この前、音声認識の調査をする機会があり試しながら遊んで仕事をしてました(^^)
音声認識は応用範囲も広く、今後も扱う機会が増えそうだと感じております(感想)。
ということで音声認識のツールの使い方をまとめておきます。
音声認識
人の話した内容(音声)を機械が認識する技術のことを音声認識と言います。
『AIスピーカーを利用した機械との会話』や『議事録の文字起こし』などで活用されています。
詳しい技術の内容は私も勉強中のため今後別の記事でまとめようと思います。
この記事では無償で利用でき、商用使用も可能なReazonSpeechとWhisperというライブラリを利用して音声認識を実施するまでの流れをまとめていきます。
・ReazonSpeech
・Whisper
Google Colaboratory(Colab)上での実装
今回はGoogle Colaboratoryを利用して音声認識をするまでの流れをまとめていきます。
(公式でもColabと略しているので以後、Google Colabと表記します。)
Google Colabはブラウザ上でPythonを記述、実行できるサービスです。
Google Drive上に音データを用意することで音声認識もGoogle Colabで簡単に試すことができます。
Google Driveのマウント
まずはGoogle Drive上のデータを扱うためにGoogle Driveをマウントします。
# Google Driveをマウント
from google.colab import drive
drive.mount('/content/drive')
ReazonSpeech
ReazonSpeechを利用するために必要なライブラリをインストールします。
# ffmpegのインストール
!apt-get install libsndfile1 ffmpeg
# reazonspechののインストール
!git clone https://github.com/reazon-research/reazonspeech
!pip install --no-warn-conflicts reazonspeech/pkg/nemo-asr
次にReazonSpeechを利用して音声認識を実行するコードと認識結果を表示するコードを書いていきます。
from reazonspeech.nemo.asr import transcribe, audio_from_path, load_model
def exec_reazon(file_path):
"""Reazonで指定の音声ファイルの音声認識を実行する"""
audio = audio_from_path(file_path)
# ReazonSpeechモデルをHugging Faceから取得
model = load_model()
result = transcribe(model, audio)
return result
def print_speech_segment_reazon(result):
"""Reazonで認識した結果をセグメントごとに表示する"""
for seg in result.segments:
print("%5.2f %5.2f %s" % (seg.start_seconds, seg.end_seconds, seg.text))
return
音ファイルを用意して以下のコードを実行することで音声認識の結果を表示することができます。
import os
file_name = "test_audio.wav"
file_path = os.path.join(dir_path, file_name)
result = exec_reazon(file_path)
# 結果を出力
print_speech_segment_reazon(result)
Whisper
次にWhisperを利用して音声認識を行うまでの流れを書いていきます。
基本的にReazonSpeechと同じ流れになります。
まずはWhisperを利用するために必要なライブラリをインストールします。
!pip install git+https://github.com/openai/whisper.git
次にWhisperを利用して音声認識を実行するコードと認識結果を表示するコードを書いていきます。
import whisper
def exec_whisper(file_path, load_model=None):
"""whisperで指定の音声ファイルの音声認識を実行する"""
if load_model is None:
model = whisper.load_model("base")
else:
model = whisper.load_model(load_model)
result = model.transcribe(file_path)
return result
def print_whisper_speech_segment(result):
"""Whisperで認識した結果をセグメントごとに表示する"""
for seg in result["segments"]:
id, start, end, text = [seg[key] for key in ["id", "start", "end", "text"]]
print(f"{id:03}: {start:5.1f} - {end:5.1f} | {text}")
音ファイルを用意して以下のコードで音声認識の結果を表示することができます。
import os
file_name = "test_audio.wav"
file_path = os.path.join(dir_path, file_name)
result = exec_whisper(file_path)
print_whisper_speech_segment(result)
まとめ
Google Colab上でReazonSpeechとWhisperを利用して音声認識を実行するまでの流れをまとめました。
どちらの音声認識ライブラリもとても使いやすいと思います。
認識精度も高く、無料で使えるのはとても有難いです。
今後も発展に期待します。
参考
・音声認識
・ReazonSpeech
・Whisper
・ライセンスの比較
・ReazonSpeechの使い方
・Whisperの使い方
・認識モデルの精度の比較
・Google Calob
Discussion