ASRとは何か
ASR(Automatic Speech Recognition)とは、人間の音声をテキストに変換する技術です。概念はシンプルですが、実際のアルゴリズムは比較的複雑で、実用化するとなるとさらに複雑になります。ASRの評価指標は一般的にWER(Words Error Rate)とされ、一定の閾値を達していないモデルは応用シーンがないことがわかります。
MMSpeechとは何か
MMSpeechは達摩院が開発し、2022年12月に発表されたばかりの音声预售訓練モデルで、OFAアーキテクチャに基づいています。このモデルは無標識テキストを最大限に活用することができ、文字エラー率を著しく下げることができます。HuBertやWav2Vecなどの有名なモデルの中国語バージョンと比較して、標準のベンチマークAIShell1の検証セット/テストセットでの文字エラー率を48.3%/42.4%低下させ、1.6%/1.9%の結果を達成しました。これはSOTAの3.1%/3.3%を大幅に上回っています。
方法の説明
MMSpeechは中国語の音声認識タスクに特化した预售訓練メソッドであり、無標識の大量の音声およびテキストデータを利用し、5つの音声/テキストタスクを統一されたエンコーダーデコーダーモデルフレームワークの下で多タスク学習を行っています。
これまでの预售訓練メソッドと比較して、MMSpeechは2つの優位性があります。一つは、音声認識の预售訓練効果を向上させるために大量の無標識テキストデータ(計292G)を使用した点です。これは、音声単独の预售訓練メソッド(Wav2Vec、HuBERT、Data2Vec、WavLMなど)がテキストデータを使用しないのとは異なり、あるいは音声-テキスト連合预售訓練メソッド(SpeechT5、STPT)が少ないテキストデータ(1.8G)を使用するのとは異なります。私たちはテキストデータが音声認識の预售訓練にどれほど価値があるかを十分に探求し、大きな向上が見られることを証明しました。
もう一方の優位性は、MMSpeechは中国語の音声シーンに特化した预售訓練メソッドである点です。これまでの预售訓練メソッドは主に英語データで探究されてきましたが、英語と比較して、中国語は意図を表す音声であり、音声とテキストモーダルの間の差異がより大きいため、音声/テキストタスクが統一モデルを共有する際に困難があります。私たちは预售訓練プロセスに音素(ここではピンインを使用)を導入することで、音声とテキストモーダル間の差異の問題を緩和し、実験により音素の導入がテキストデータがより大きな価値を発揮し、预售訓練効果を向上させることを証明しました。
具体而言、MMSpeechのトレーニングプロセスは上記の図に示されているように、合計5つのタスクから構成されます。これらはphone-to-text(P2T)、speech-to-code(S2C)、masked speech prediction(MSP)、phoneme prediction(PP)、speech-to-text(S2T)です。
その中では、phone-to-text、speech-to-codeの这2つのタスクでは、無標識のテキストデータと無標識の音声データそれぞれを用いて、偽造されたペアデータを構築し、エンコーダーデコーダーが自己監督学習を行うのを助けています。同時に、過去には多くのエンコーダーに対する音声预售訓練の方法(例えばWav2Vec)が無標識の音声データでエンコーダーを訓練して良い音声表現を得ることができ、音声タスクの効果を向上させることが示されたため、MMSpeechではmasked speech prediction、phoneme predictionの这2つのタスクも導入して、無標識の音声データでエンコーダーを预售訓練しています。最後に、私たちは下游の音声認識タスクspeech-to-textも多タスク学習に導入し、モデルの効果をさらに向上させています。
Zero-shot && Finetune
Zero-shot
MMSpeechは预售訓練プロセスで少量のダウンストリームのASRタスクの標識付きデータを使って補助的に訓練するため、ファインチューンを行わずにも比較的良好な音声認識効果を達成できますが、より良い効果を得たい場合は、次のセクションのファインチューンの例を参照してください。
预售訓練モデルを直接使用して推論を行うことができます。オーディオファイルを入力し、対象のテキストを出力します。モデルは任意のサンプリングレートとチャンネル数のWAVオーディオファイルをサポートしていますが、推奨される入力音声の長さは20秒以下です。
依赖
pip install 'librosa<0.10.0'
api调用范例
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
pretrained_model = "damo/ofa_mmspeech_pretrain_large_zh"
pipe = pipeline(Tasks.auto_speech_recognition, model=pretrained_model, model_revision='v1.0.1')
result = pipe({"wav": "https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/maas/speech/asr_example_ofa.wav"})
print(result) # 甚至出现交易几乎停滞的情况
Finetune示例
トレーニングの開始
基本的な設定が完了すると、ファインチューンを実行することができます。以下はファインチューンを開始するコードの紹介です。
import tempfile
from modelscope.msdatasets import MsDataset
from modelscope.metainfo import Trainers
from modelscope.trainers import build_trainer
from modelscope.utils.constant import DownloadMode
train_dataset = MsDataset(
MsDataset.load('speech_asr_aishell1_testsets', subset_name='default',namespace='modelscope', split='train').remap_columns({
'Audio:FILE': 'wav',
'Text:LABEL':'text'
}))
test_dataset = MsDataset(
MsDataset.load('speech_asr_aishell1_testsets', subset_name='default', namespace='modelscope', split='test').remap_columns({
'Audio:FILE': 'wav',
'Text:LABEL':'text'
}))
print(next(iter(test_dataset)))
def cfg_modify_fn(cfg):
cfg.train.hooks = [{
'type': 'CheckpointHook',
'interval': 2
}, {
'type': 'TextLoggerHook',
'interval': 1
}, {
'type': 'IterTimerHook'
}]
cfg.train.max_epochs=2
return cfg
args = dict(
model="damo/ofa_mmspeech_pretrain_large_zh",
model_revision='v1.0.1',
train_dataset=train_dataset,
eval_dataset=test_dataset,
cfg_modify_fn=cfg_modify_fn,
work_dir = tempfile.TemporaryDirectory().name)
trainer = build_trainer(name=Trainers.ofa, default_args=args)
trainer.train()
数据评估及结果
在 AISHELL-1 的dev/test数据集上进行测试, 没有增加LM的效果
Model dev(w/o LM) dev(with LM) test(w/o LM) test(with LM)
MMSpeech-Base-Pretrain 2.5 2.3 2.6 2.3
MMSpeech-Base-aishell1 2.4 2.1 2.6 2.3
MMSpeech-Large-Pretrain 2.0 1.8 2.1 2.0
MMSpeech-Large-aishell1 1.8 1.6 2.0 1.9
会社名:株式会社Dolphin AI
事業内容:
DolphinSOE 英語発音評価サービスの開発&販売
DolphinVoice 音声対話SaaS Platformの開発&販売
アクセス情報:〒170-0013
東京都豊島区東池袋1-18-1 Hareza Tower 20F
JR山手線・埼京線 池袋駅東口(30番出口)より徒歩4分
東京メトロ丸の内線・副都心線・有楽町線 池袋駅東口(30番出口)より徒歩4分
西武池袋線 池袋駅東口(30番出口)より徒歩4分
東武東上線 池袋駅東口(30番出口)より徒歩4分
電話番号:(+81) 03-6775-4523
メールアドレス:contact@dolphin-ai.jp