EC2（AmazonLinux2023）インスタンスにReazonSpeech v2をインストールする手順　

# はじめに

今回は「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](https://huggingface.co/datasets/reazon-research/reazonspeech)」のページへアクセスし、ユーザー利用条件の受け入れ（Accept）を実施
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3831490/874c84d3-0384-b2a9-73cc-2c3bfb29c1c1.png)

# 2.環境構築

## EC2インスタンスの起動
- AWSコンソールから「EC2」サービスへアクセス
- 下図を参考にインスタンス起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3831490/da11cb94-8976-9f2f-4e86-842d1c1af0d5.png)


![スクリーンショット 2024-07-05 145116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3831490/b4654291-dd69-6771-a6a9-03500e47ad0c.png)


- 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」ファイルを任意のディレクトリにデプロイする

```python: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の実行
```bash:command
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