はじめに
今回は「ReazonSpeech v2.0(NeMoモデル)」を利用して、音声ファイルの文字起こしができる環境を作ります。
なんとこちらのモデルは
同じことをOpenAI Whisperとの比較で言い替えると、Whisperの最も小さいTinyモデルの速度で、 最も大きいLargeモデル相当の精度を達成できています。
引用元:https://research.reazon.jp/blog/2024-02-14-ReazonSpeech.html
とのことで、音声認識モデルの中でもWhisperをしのぐ「認識精度」と「処理速度」を持つモデルであることがわかります。(2024-02-14時点)
こちらのモデルは無償で商用利用可能な点も魅力といえます。(Apache-2.0ライセンスに準拠)
では早速、構築していきましょう!
使用技術
文字起こし:reazonspeech-nemo-v2
実行環境サーバー:AWS EC2(AmazonLinux2023)
前提条件
・HuggingFaceのアカウントが取得済みであること
目次
1.事前準備
2.環境構築
3.ソースのデプロイ
4.コード実行
5.まとめ
それでは、実際の環境構築に進んでいきましょう!
1.事前準備
利用モデルの利用規約を許諾する
- 「reazon-research/reazonspeech」のページへアクセスし、ユーザー利用条件の受け入れ(Accept)を実施
2.環境構築
EC2インスタンスの起動
- AMI:GPUは利用しないが「Deep Learning OSS Nvidia Driver AMI GPU PyTorch 2.3」を選択
- インスタンスタイプ:t2.large(メモリ8GBほしいので)
- ボリューム:70GiB(諸々のインストールで結構容量食う)
作成したインスタンスを選択し「インスタンスを開始」
SSHクライアントからインスタンスへ接続し下記のコマンドを実行
# インストールに必要なパッケージのインストール
sudo yum groupinstall "Development Tools" -y
sudo yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++
sudo yum install -y gcc gcc-c++ make autoconf automake cmake git-core libtoolgit libtool make mercurial pkgconfig zlib-devel -y
sudo yum install nasm
# Lame MP3エンコーダーをインストール
cd /tmp
wget https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix=/usr/local --enable-nasm --enable-shared
make
sudo make install
# X264をインストール
cd /tmp
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --prefix=/usr/local --enable-static --enable-shared
make
sudo make install
# ffmpegのインストール
cd /tmp
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout release/4.4
./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libmp3lame --enable-libx264
make -j$(nproc)
sudo make install
# 環境変数「PKG_CONFIG_PATH」を設定
echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> ~/.bashrc
source ~/.bashrc
sudo ldconfig
# Pythonのvenv環境作成
python3 -m venv venv
source venv/bin/activate
# Cythonをインストール
pip install Cython
# 依存関係のあるパッケージのインストール
pip install numpy==1.23.5
pip install huggingface_hub==0.23.2
pip install nemo_toolkit
# ReazonSpeechをインストール
cd /tmp
git clone https://github.com/reazon-research/ReazonSpeech
pip install ReazonSpeech/pkg/nemo-asr
ソースのデプロイ
「app.py」ファイルを任意のディレクトリにデプロイする
from reazonspeech.nemo.asr import load_model, transcribe, audio_from_path
# 実行時にHugging Faceからモデルを取得します (2.3GB)
model = load_model(device='cpu')
# ローカルの音声ファイルを読み込む
audio = audio_from_path('test.wav')
# 音声認識を適用する
ret = transcribe(model, audio)
print(ret.text)
※「音声ファイル(test.wav)」は別途用意し、app.pyと同一のディレクトリにおいてください。
4.コード実行
デプロイしたディレクトリに移動して、app.pyの実行
python app.py
音声ファイルの文字起こし結果が、標準出力されたら成功です。
5.まとめ
今回はEC2インスタンスに音声認識モデル「ReazonSpeech v2(nemo)」をインストールして、実際に文字起こしを行うという手順でした。
パッケージの依存関係で数日ハマりましたが、何とか動作するパターンを見つけました。
改めて下記にまとめます。
numpy==1.23.5
huggingface_hub==0.23.2
nemo_toolkit
それではまた別の記事でお目にかかります。
ありがとうございました。
6.参考記事
[参考サイト]
https://research.reazon.jp/projects/ReazonSpeech/howto.html#python
https://github.com/NVIDIA/NeMo/issues/9793