音声系ももっと調査していきたい。
導入
Rinna社が大規模言語モデルを利用した音声認識モデル「Nue ASR」を発表しました。
OpenAI Whisperに匹敵する性能ということで、興味があって試してみました。
huggingfaceのサンプルコードを参考に、Databricksのノートブック上で動かしてみます。
DBRは14.2ML、クラスタはg5.2xlarge(AWS)です。
Step1. パッケージインストール
必要なパッケージをインストール。
今回はdeepspeedを使うため、deepspeedの最新版もインストールしておきます。
%pip install git+https://github.com/rinnakk/nue-asr.git
%pip install -U transformers accelerate deepspeed
Step2. モデルのロード
事前にhuggingfaceからダウンロードしておいたモデルをロードします。
use_deepspeed=True
でdeepspeedでの推論を有効化します。
import nue_asr
model_path = "/Volumes/training/llm/model_snapshots/models--rinna--nue-asr"
model = nue_asr.load_model(model_path, use_deepspeed=True)
tokenizer = nue_asr.load_tokenizer(model_path)
Step3. 音声認識その1
こちらから音声ファイルを利用させていただいて、音声認識してみます。
import requests
url = "https://soundeffect-lab.info/sound/voice/mp3/info-lady1/info-lady1-okakeninattadenwabangouha1.mp3"
response = requests.get(url)
# 保存先ファイル名
wave_file_name1 = "audio_1.mp3"
# バイナリ形式で保存
with open(wave_file_name1, "wb") as f:
f.write(response.content)
result = nue_asr.transcribe(model, tokenizer, wave_file_name1)
print(result.text)
かけになった電話番号は現在使われておりません。
正しくは「おかけになった電話番号は、現在使われておりません」という音声です。
最初の文字が欠けていますが、それ以外は正しく認識しています。
最後に読点が付くのが面白い。
Step4. 音声認識その2
少し長めの音声を使用してみます。
以下の内容を読み上げた音声ファイルになります。
「本日はご来場いただきまして、誠にありがとうございます。開園に先立ちまして、お客様にお願い申し上げます。携帯電話など、音の出るものの電源はお切りください。また許可のない録音・撮影はご遠慮ください。皆様のご協力をよろしくお願いいたします」
import requests
url = "https://soundeffect-lab.info/sound/voice/mp3/info-lady1/info-lady1-honzitsuhagoraizyou1.mp3"
response = requests.get(url)
# 保存先ファイル名
wave_file_name2 = "audio_2.mp3"
# バイナリ形式で保存
with open(wave_file_name2, "wb") as f:
f.write(response.content)
result = nue_asr.transcribe(model, tokenizer, wave_file_name2)
print(result.text)
The input audio is 26.5 sec, but such long audio inputs may degrade recognition accuracy. It is recommended to split the audio into shorter segments.
携帯電話など音の出るもの電源はお切りください皆様のご協力をよろしくお願いいたします。
部分的な内容が切り出されていました。(最後の部分だけが抜き出されているわけではない)
警告メッセージが出力されているように、長い音声ファイルは正しく認識できないようです。
適切に分けるという前処理とセットで使うことになりそうです。
まとめ
簡単ですが、Nue ASRを試してみました。
上記に記載していませんでしたが、認識速度はどちらも1秒未満であり、かなり速いです。
(deepspeedの恩恵なのかもしれません)
VRAMの資料用は8.8GBほど。T4で動きそうです。
ただ、通常のメモリはロード時に30GBくらいまで使われていたので、RAMは大きめがよさそう。
認識性能はこれだけだと何とも言えなさいのですが、ある程度適切な文章が生成されるように思います。
これからさらに改善されていきそうな感じですので、今後が非常に楽しみです。