OFA-MMSpeech音声認識事前トレーニング-中国語-一般ドメインベース

この記事は約11分で読めます。

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%を大幅に上回っています。

現在、4つのOFA-MMSpeechモデルがリリースされています。残りの3つは以下の通りです。

  • プリトレーニングLargeモデル
  • AIShell1ファインチューンBaseモデル
  • AIShell1ファインチューンLargeモデル

方法の説明

MMSpeechは、中国語音声認識タスクに特化したプリトレーニング方法であり、大量の無標識の音声およびテキストデータを利用し、5つの音声/テキストタスクを統一されたエンコーダー-デコーダーモデルフレームワークの下でマルチタスク学習を行います。

これまでのプリトレーニング方法とは異なり、MMSpeechは2つの利点があります。一つは、無標識テキストデータ(合計292GB)を大幅に使用して、音声認識のプリトレーニング効果を向上させた点です。これは、テキストデータを使用しない音声単一モーダルプリトレーニング方法(Wav2Vec、HuBERT、Data2Vec、WavLMなど)とは異なり、またはテキストデータを少ない量(1.8GB)使用する音声-テキスト共同プリトレーニング方法(SpeechT5、STPT)とは異なります。私たちはテキストデータが音声認識プリトレーニングに与える価値を十分に探求し、大きな向上が見られることを証明しました。もう一方の利点は、MMSpeechは特に中国語音声シーンに特化したプリトレーニング方法である点です。これまでのプリトレーニング方法は主に英語データに基づいており、中国語と英語とは異なり、中国語は意図言語であり、音声とテキストモーダル間の違いがより大きくなります。これは、音声/テキストタスクが統一モデルを共有する際に困難をきたします。私たちは、音声とテキストを密接に結ぶモーダルである音素(phone、ここではピンインを使用)をプリトレーニングプロセスに導入し、音声とテキストモーダル間の違いの問題を緩和し、実験を通じてその導入がテキストデータをより大きな価値を発揮させ、プリトレーニング効果を向上させることを証明しました。

詳細については、論文の紹介を参照してください:https://arxiv.org/abs/2212.00500

具体的には、MMSpeechのトレーニングプロセスは上記の図に示されているように、phone-to-text(P2T)、speech-to-code(S2C)、masked speech prediction(MSP)、phoneme prediction(PP)、speech-to-text(S2T)の5つのタスクから成ります。

その中では、phone-to-text、speech-to-codeの这2つのタスクはそれぞれ無標識のテキストデータおよび無標識の音声データを利用し、偽のペアデータを構築してエンコーダー-デコーダーに自監督学習を行わせるのに役立ちます。また、過去には多くのエンコーダーに対する音声プリトレーニングの方法(例えばWav2Vec)が無標識音声データでエンコーダーをトレーニングして良い音声表現を得ることができ、音声タスクの効果を向上させることが証明されていることから、MMSpeechではmasked speech prediction、phoneme predictionの这2つのタスクを導入し、無標識音声データを使用してエンコーダーのプリトレーニングを行います。最後に、私たちは音声認識タスクspeech-to-textもマルチタスク学習に導入し、モデルの効果をさらに向上させます。

関連するモデル

モデル名 モデルサイズ 無標識音声 無標識テキスト ラベル付き プリトレーニング ファインチューン
MMSpeech-Base 210M AIShell-2 M6-Corpus AIShell-1 ofa_mmspeech_pretrain_base_zh ofa_mmspeech_asr_aishell1_base_zh
MMSpeech-Large 609M WenetSpeech M6-Corpus AIShell-1 ofa_mmspeech_pretrain_large_zh ofa_mmspeech_asr_aishell1_large_zh

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_base_zh"
pipe = pipeline(Tasks.auto_speech_recognition, model=pretrained_model, model_revision='v1.0.2')
result = pipe({"wav": "https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/maas/speech/asr_example_ofa.wav"}) 
print(result) # 取引がほぼ停滞する状況も発生する可能性があります

Finetuneの例 現在のmodelscope==1.2.0以上のバージョンでは、pipelineとtrainの構成が一体化されており、ファインチューンプロセスを直接開始できます。

API使用例

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_base_zh",
    model_revision='v1.0.2',
    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を加えていない効果

モデル dev(w/o LM) dev(with LM) テスト(w/o LM) テスト(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

関連論文および引用 OFA-MMSpeechが役立ち、私たちの仕事を気に入っていただけた場合は、以下のように引用してください:

@article{zhou2022mmspeech, author = {Zhou, Xiaohuan and Wang, Jiaming and Cui, Zeyu and Zhang, Shiliang and Yan, Zhijie and Zhou, Jingren and Zhou, Chang}, title = {MMSpeech: 多モーダル多タスクエンコーダー-デコーダープリトレーニングによる音声認識}, journal = {arXiv preprint arXiv:2212.00500}, year = {2022} } @article{wang2022ofa, author = {Wang, Peng and Yang, An and Men, Rui and Lin, Junyang and Bai, Shuai and Li, Zhikang and Ma, Jianxin and Zhou, Chang and Zhou, Jingren and Yang, Hongxia}, title = {OFA: 単純なシーケンストゥシーケンス学習フレームワークを通じてアーキテクチャ、タスク、モーダルITYを統一する}, journal = {CoRR}, volume = {abs/2202.03052}, year = {2022} }

ドルフィンAIは言語学習アプリケーションのためのプロフェッショナルな発音評価API(pronunciation assessment api)ソリューションを提供します。音素、単語、文章、チャプター、発音矯正、単語矯正、クイズ、フリーダイアログ、多肢選択問題など幅広く提供しています。当社の発音評価製品(pronunciation assessment)は、英語と中国語、クラウドAPI、オンプレミス、オフラインデバイスの展開をサポートしています。当社の発音評価API(pronunciation assessment api)は、正確性、流暢性、完全性、リズムの次元をカバーする豊富な評価指標を提供し、音素、単語、文の異なるレベルの評価スコアも提供します。また、音素、単語、文の異なるレベルでの評価スコアも提供します。数千万人のユーザーに安定した効率的で安全なサービスを提供しています。ドルフィンAIの発音評価製品(pronunciation assessment)を試してみませんか?

タイトルとURLをコピーしました