日本語音声認識モデルReazonSpeechでSpeech-to-Textの文字起こしを試してみた

スポンサーリンク
Whisper
スポンサーリンク

ReazonSpeechは日本のレアゾン・ヒューマンインタラクション研究所が開発した約19,000時間のラベル付き日本語音声コーパスで、そのコーパスから学習されたSpeech-to-TextのESPnetモデルが公開されています。日本語に特化して学習することで、少ないパラメータ数でもOpenAIのWhisperのlargeモデルに匹敵する文字起こしの精度を達成しているとのことです。Apache-2.0のライセンスで公開されており、商用利用や再配布可能な柔軟なライセンスのモデルが提供されています。

公式ニュースリリース
「超高精度で商用利用可能な純国産の日本語音声認識モデル「ReazonSpeech」を無償公開」

ESPnetのインストールとモデルのダウンロード

まず、ESPnetの環境を構築します。ESPnetは音声認識、テキスト音声合成、音声翻訳、音声協調、話者識別、音声言語理解など幅広くカバーする音声処理ツールキットで、PyTorchをべーすとして、様々な音声処理実験環境を提供してくれます。

今回はWindowsネイティブ環境でPython3.8の環境に構築していきます。前準備として、下記の過去記事でのPyTorch環境のセットアップがされていることを前提に進めていきます。もし、Python3.8をインストールしていない場合は、あらかじめインストールしておいてください。

適当なフォルダに仮想環境を作って、そこにPyTorchとespnetをインストールします。また、開発は対話型のJupyterLab上で行っていきます。

> py -3.8 -m venv venv
> ./venv/Scripts/Activate.ps1
(venv) > python -m pip install -U pip setuptools
(venv) > pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
(venv) > pip install espnet
(venv) > pip install espnet_model_zoo
(venv) > pip install jupyterlab

JupyterLabを起動します。

(venv) > jupyter-lab

以下、Jupyter notebook上での操作です。ReazonSpeechのモデルをダウンロードしてきます。

import torch
import librosa
from espnet2.bin.asr_inference import Speech2Text

device = "cuda" if torch.cuda.is_available() else "cpu"

reazonspeech = Speech2Text.from_pretrained(
  "reazon-research/reazonspeech-espnet-v1",
  beam_size=5,
  batch_size=0,
  device=device
)

ReazonSpeechによる音声識別

まずは、公式ページに公開されているサンプル音声で試してみます。

import urllib.request
url = "https://research.reazon.jp/_static/speech-001.wav"
filename = "speech-001.wav"
urllib.request.urlretrieve(url, filename)

speech, rate = librosa.load(filename, sr=24000)
result = reazonspeech(speech)
result[0][0]
'気象庁は雪や路面の凍結による交通への影響や暴風や高波に警戒するとともに雪崩や屋根からの落雪にも十分注意するよう呼びかけています'

しっかり音声識別できました。

次に私がVOICEVOXで生成した音声でやってみます。下の音声ファイルをローカルに保存して、実行してみます。

“test.wav” VOICEVOX:ずんだもん
speech, rate = librosa.load("test.wav", sr=24000)
result = reazonspeech(speech)
result[0][0]
'わたしのなまえはずんだもんですってとくいなことはしゃべることです'

以前の記事でWhisperのmidiumモデルでは、以下のように出力されていました。このwavデータの認識の結果ではWhisper-midiumのほうが良い結果が得られました。(私の設定が悪いのかもしれません。。。)

私の名前はズンダモンです。東北地方の応援マスコットをしています。得意なことは喋ることです。

beam_sizeなどのパラメータをチューニングすることでうまく出力してくれるかもしれません。ニュース音声をベースにしているため、VOICEVOX音声と相性が悪かったかもしれませんね。

終わりに

今回はReazonSpeechのモデルを試してみました。音声識別の世界は機械学習の進歩とともに自然になってきています。今回、音声モデルだけではなく、音声コーパスも公開されているので、学習する環境はますますよくなってきています。今後のさらなる発展にも期待です。

Whisper
スポンサーリンク
鷹の目週末プログラマー

コメント