🐕

ReazonSpeechとWhisperで音声認識_Google Colaboratory上での実装

2024/09/11に公開

前書き

音関連のタスクと何かと縁のあるAIエンジニアです。
初めて勉強した時は信号処理(周波数解析)の理解に苦しんだ思い出があります(^^;

この前、音声認識の調査をする機会があり試しながら遊んで仕事をしてました(^^)

音声認識は応用範囲も広く、今後も扱う機会が増えそうだと感じております(感想)。
ということで音声認識のツールの使い方をまとめておきます。

音声認識

人の話した内容(音声)を機械が認識する技術のことを音声認識と言います。
『AIスピーカーを利用した機械との会話』や『議事録の文字起こし』などで活用されています。

詳しい技術の内容は私も勉強中のため今後別の記事でまとめようと思います。

この記事では無償で利用でき、商用使用も可能なReazonSpeechWhisperというライブラリを利用して音声認識を実施するまでの流れをまとめていきます。


・ReazonSpeech
https://research.reazon.jp/projects/ReazonSpeech/index.html

・Whisper
https://github.com/openai/whisper


Google Colaboratory(Colab)上での実装

今回はGoogle Colaboratoryを利用して音声認識をするまでの流れをまとめていきます。
(公式でもColabと略しているので以後、Google Colabと表記します。)
https://colab.research.google.com/?hl=ja

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を利用して音声認識を実行するまでの流れをまとめました。
どちらの音声認識ライブラリもとても使いやすいと思います。

認識精度も高く、無料で使えるのはとても有難いです。
今後も発展に期待します。

参考

・音声認識
https://book.impress.co.jp/books/1120101083

・ReazonSpeech
https://research.reazon.jp/projects/ReazonSpeech/index.html

・Whisper
https://github.com/openai/whisper

・ライセンスの比較
https://yamory.io/blog/about-mit-License

・ReazonSpeechの使い方
https://research.reazon.jp/projects/ReazonSpeech/quickstart.html

https://note.com/npaka/n/na355fc7b8dce

https://note.com/nyanta123/n/ncd9dae432356

・Whisperの使い方
https://www.ai-factory.co.jp/column/column-06.html

・認識モデルの精度の比較
https://www.ai-shift.co.jp/techblog/4512

・Google Calob
https://colab.research.google.com/?hl=ja

https://www.kikagaku.co.jp/kikagaku-blog/google-colab-howto/

Goals Tech Blog

Discussion