🚀 wav2vec2を用いた感情認識(IEMOCAPベース)
このリポジトリは、SpeechBrainを使用して微調整されたwav2vec2(ベース)モデルを用いて感情認識を行うために必要なすべてのツールを提供します。このモデルはIEMOCAPのトレーニングデータで学習されています。
より良い体験のために、SpeechBrainについてもっと学ぶことをおすすめします。IEMOCAPのテストセットにおけるモデルの性能は以下の通りです。
リリース |
正解率(%) |
19-10-21 |
78.7 (平均: 75.3) |
🚀 クイックスタート
✨ 主な機能
このシステムはwav2vec2モデルで構成されています。これは畳み込みブロックと残差ブロックの組み合わせです。埋め込みは注意統計プーリングを使用して抽出されます。システムはAdditive Margin Softmax Lossで学習され、話者認証は話者埋め込み間のコサイン距離を使用して行われます。
このシステムは16kHzでサンプリングされた録音(単チャンネル)で学習されています。コードは、必要に応じてclassify_fileを呼び出す際に自動的にオーディオを正規化します(リサンプリング + モノチャンネル選択)。
📦 インストール
まず、以下のコマンドでSpeechBrainの開発バージョンをインストールしてください。
pip install git+https://github.com/speechbrain/speechbrain.git@$develop
SpeechBrainのチュートリアルを読み、もっと学ぶことをおすすめします。
💻 使用例
基本的な使用法
from speechbrain.inference.interfaces import foreign_class
classifier = foreign_class(source="speechbrain/emotion-recognition-wav2vec2-IEMOCAP", pymodule_file="custom_interface.py", classname="CustomEncoderWav2vec2Classifier")
out_prob, score, index, text_lab = classifier.classify_file("speechbrain/emotion-recognition-wav2vec2-IEMOCAP/anger.wav")
print(text_lab)
予測テンソルには(埋め込み, クラスID, ラベル名)のタプルが含まれます。
高度な使用法
Intel OpenVINOランタイムを推論の「バックエンド」として使用することで、加速度の力を解放し、Intel®ハードウェアと環境の混合、オンプレミス、デバイス上、ブラウザ内、またはクラウドで展開できます。custom_interface.py
のCustomEncoderWav2vec2Classifier
クラスでバックエンドを「openvino」として渡すと、Intel OpenVINOバックエンドをサポートし、ターゲットデバイスでモデル推論を実行できます。
OpenVINOを使用したモデル推論の手順
- SpeechBrainとOpenVINOのインストール
まず、必要な依存関係をインストールしてください。以下のコマンドを実行して、SpeechBrainの開発バージョン、OpenVINO、および必要なバージョンのtransformersライブラリをインストールします。
pip install git+https://github.com/speechbrain/speechbrain.git@develop --extra-index-url https://download.pytorch.org/whl/cpu
pip install "openvino>=2024.1.0"
pip install "transformers>=4.30.0"
- OpenVINOバックエンドでの推論実行
OpenVINOバックエンドを使用して推論を実行するには、サンプルアプリケーションを使用できます。以下は、モデル推論をセットアップして実行する方法を示すサンプルスクリプト(app.py)です。
config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
ov_opts = {"ov_device": "CPU", "config": config}
torch_device = "cpu"
instance = CustomEncoderWav2vec2Classifier(modules=checkpoint.mods,
hparams=hparams_dict, model=classifier.mods["wav2vec2"].model,
audio_file_path="speechbrain/emotion-recognition-wav2vec2-IEMOCAP/anger.wav",
backend="openvino",
opts=ov_opts,
torch_device=torch_device,
save_ov_model=False)
アプリケーションを実行するには、次のコマンドを実行してください。
python app.py
OpenVINOで推論を最適化する詳細な情報については、OpenVINO最適化ガイドを参照してください。
GPUでの推論
GPUで推論を実行するには、from_hparams
メソッドを呼び出す際にrun_opts={"device":"cuda"}
を追加してください。
トレーニング
このモデルはSpeechBrain (aa018540) で学習されました。ゼロから学習するには、以下の手順に従ってください。
- SpeechBrainのクローン
git clone https://github.com/speechbrain/speechbrain/
- インストール
cd speechbrain
pip install -r requirements.txt
pip install -e .
- 学習の実行
cd recipes/IEMOCAP/emotion_recognition
python train_with_wav2vec2.py hparams/train_with_wav2vec2.yaml --data_folder=your_data_folder
学習結果(モデル、ログなど)はこちらで確認できます。
制限事項
SpeechBrainチームは、このモデルを他のデータセットで使用した場合の性能について、いかなる保証も提供しません。
📚 ドキュメント
SpeechBrainの引用
このモデルを研究やビジネスで使用する場合は、SpeechBrainを引用してください。
@misc{speechbrain,
title={{SpeechBrain}: A General-Purpose Speech Toolkit},
author={Mirco Ravanelli and Titouan Parcollet and Peter Plantinga and Aku Rouhe and Samuele Cornell and Loren Lugosch and Cem Subakan and Nauman Dawalatabad and Abdelwahab Heba and Jianyuan Zhong and Ju-Chieh Chou and Sung-Lin Yeh and Szu-Wei Fu and Chien-Feng Liao and Elena Rastorgueva and François Grondin and William Aris and Hwidong Na and Yan Gao and Renato De Mori and Yoshua Bengio},
year={2021},
eprint={2106.04624},
archivePrefix={arXiv},
primaryClass={eess.AS},
note={arXiv:2106.04624}
}
📄 ライセンス
このプロジェクトはApache-2.0ライセンスの下で公開されています。
SpeechBrainについて
- ウェブサイト: https://speechbrain.github.io/
- コード: https://github.com/speechbrain/speechbrain/
- HuggingFace: https://huggingface.co/speechbrain/