Platform for AI (PAI) は、音声インテリジェンス用の拡張アルゴリズムフレームワークであるEasyASRを提供します。 EasyASRは、モデルトレーニングと予測のためのさまざまな機能を提供します。 EasyASRを使用して、音声認識アプリケーションの音声認識モデルをトレーニングおよび適用できます。 このトピックでは、Data Science Workshop (DSW) の音声認識にEasyASRを使用する方法について説明します。
前提条件
DSWインスタンスが作成され、ソフトウェアバージョンの要件が満たされます。 詳細については、「DSWインスタンスの作成」と「制限」をご参照ください。
GPU高速化DSWインスタンスの使用を推奨します。
背景情報
この例では、事前訓練されたwav2letter-smallモデルが使用される。 PAIはまた、自動音声認識 (ASR) のための事前トレーニングされたwav2letter-base、変圧器小モデル、および変圧器ベースモデルを提供する。 特定の事前トレーニング済みモデルを使用するには、次の表の対応するファイル名をクリックしてモデルファイルをダウンロードし、必要に応じてこのトピックで提供されるコードを調整します。
モデル | 語彙 | 設定ファイル | モデルファイル | 説明 |
wav2letter-small | wav2letterシリーズは、低い精度は許容できるが高い推論速度が必要なシナリオに適しています。 wav2letter-baseモデルは、wav2letter-smallモデルよりも多くのパラメータを有する。 | |||
wav2letter-base | ||||
変圧器小さい | 変圧器シリーズは低い推論の速度は受諾可能であるが高精度が要求されるシナリオのために適している。 変圧器ベースモデルは、変圧器小型モデルよりも多くのパラメータを有する。 | |||
トランスベース |
制限事項
ソフトウェアのバージョンに関連する次の項目に注意してください。
Python 3.6がサポートされています。
TensorFlow 1.12とPAI-TensorFlow V1.15がサポートされています。
PyTorchのすべてのバージョンはサポートされていません。
DSWの
tensorflow:1.12PAI-gpu-py36-cu101-ubuntu18.04
またはtensorflow:1.15-gpu-py36-cu100-ubuntu18.04
イメージを使用することを推奨します。
手順
DSWで音声認識にEasyASRを使用するには、次の手順を実行します。
音声認識用のトレーニングデータをダウンロードします。
ステップ2: データセットを構築してASRモデルをトレーニングする
トレーニングデータをTFRecordファイルに変換し、ASRモデルをトレーニングします。
トレーニングが完了したら、モデルの認識精度を評価します。 モデルに満足している場合は、モデルをSavedModelファイルとしてエクスポートし、そのファイルを使用して分散バッチ予測を実行します。
エクスポートしたSavedModelファイルを使用して予測を実行します。
ステップ1: データの準備
この例では、EasyASRパブリックモデル動物園で提供される事前トレーニングされたASRモデルwav2letter-smallは、わずかに微調整され、使用されるデータセットは、THCHS-30のサブセットである。 THCHS-30は、中国語のパブリックデータセットです。 独自のデータを使用してモデルをトレーニングすることを推奨します。
Data Science Workshop (DSW) の開発環境に移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
ページの左上隅で、PAIを使用するリージョンを選択します。
左側のナビゲーションウィンドウで、 .
(オプション) [Data Science Workshop (DSW)] ページで、検索ボックスにDSWインスタンスの名前またはキーワードを入力して、DSWインスタンスを検索します。
DSWインスタンスを見つけて、開くで、アクション列を作成します。
の開発環境でDSWをクリックします。ノート上部のナビゲーションバーに表示されます。
データをダウンロードします。
左上隅のツールバーで、アイコンをクリックしてプロジェクトフォルダを作成します。 この例では、フォルダの名前はasr_testです。
DSW開発環境で、上部のナビゲーションバーにあるターミナルをクリックします。 [ターミナル] タブで、[ターミナルの作成] をクリックします。
ターミナルで次のコマンドを実行します。
cd
コマンドを使用して作成したフォルダーに移動し、wget
コマンドを使用してASRモデルのトレーニングに使用するデモデータセットをダウンロードします。cd asr_test wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/dsw_sample_data/demo_data.tar.gz wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/dsw_sample_data/sample_asr_data.csv
Terminalで次のコマンドを実行して、dataという名前のサブフォルダーを作成し、デモデータセットをサブフォルダーに解凍します。
mkdir data tar xvzf demo_data.tar.gz -C data
ASRモデルをダウンロードします。
EasyASRパブリックモデル動物園では、事前にトレーニングされた4つのASRモデル、wav2letter-small、wav2letter-base、トランススモール、トランスベースが提供されています。 2つのwav2letterモデルはより高い推論速度を提供しますが、2つのトランスモデルはより高い精度を提供します。 この例では、wav2文字モデルが使用されます。 ターミナルで次のコマンドを実行し、wav2letter-smallモデルをダウンロードします。
mkdir wav2letter-small wget -P wav2letter-small https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/w2lplus-small/model.ckpt.index wget -P wav2letter-small https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/w2lplus-small/model.ckpt.meta wget -P wav2letter-small https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/w2lplus-small/model.ckpt.data-00000-of-00001 wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/w2lplus-small/alphabet4k.txt wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/w2lplus-small/w2lplus-small.py
プロジェクトフォルダ内のサブフォルダとファイルを表示するasr_test.
プロジェクトフォルダには、次のサブフォルダとファイルが含まれます。
data: モデルトレーニングに使用される音声ファイルを格納するサブフォルダ。 一般に、モデルトレーニング用の音声ファイルは、最大15秒の長さと16,000 HZのサンプリングレートを有するWAVフォーマットのモノラル音声ファイルである。
w2lplus-small: モデルのトレーニング前のチェックポイントを格納するサブフォルダ。
alphabet4K.txt: モデルの4K漢字語彙を格納するファイル。
sample_asr_data.csv: すべてのWAVファイルのパスとアノテーションを格納するファイル。 カスタムデータを使用する場合は、アノテーションで文字をスペースで区切り、文をセミコロン (;) で区切ります。 指定された文字はボキャブラリでなければなりません。 語彙に文字が含まれていない場合は、その文字をアスタリスク (*) に置き換えます。
w2lplus-small.py: モデルの構成ファイル。
次の図に示すように、w2lplus-smallフォルダーに移動して、モデルのトレーニング前のチェックポイントを表示できます。
ステップ2: データセットを構築してASRモデルをトレーニングする
EasyASRのデータ変換機能を使用して、準備したデータをTFRecordファイルに変換します。 これを行うには、asr_testフォルダーで次のコマンドを実行します。
easyasr_create_dataset --input_path='sample_asr_data.csv' --output_prefix='tfrecords/'
コマンドには次のパラメータが含まれます。
input_path: トレーニングデータを指定するCSVファイルの名前。 このファイルには、トレーニングに使用するすべてのWAVファイルのパスと注釈が含まれています。
output_prefix: 出力TFRecordファイルのパスのプレフィックス。 この例では、すべてのTFRecordファイルがtfrecordsフォルダーにエクスポートされます。 このパラメーターは必要に応じて変更できます。
重要パスの末尾のスラッシュ (/) を省略しないでください。
ターミナルで次のコマンドを実行して、ASRモデルをトレーニングします。
easyasr_train --config_file='w2lplus-small.py' --log_dir='model_dir' --load_model_ckpt='wav2letter-small/model.ckpt' --vocab_file='alphabet4k.txt' --train_data='tfrecords/train_*.tfrecord'
コマンドには次のパラメータが含まれます。
config_file: モデルの設定ファイル。 この例では、w2plus-small.pyという名前のwav2letter-smallモデルの構成ファイルが使用されます。 このパラメーターは必要に応じて変更できます。
log_dir: 出力モデルチェックポイントのパス。 このパラメーターは必要に応じて変更できます。
load_model_ckpt: モデルのトレーニング前のチェックポイント。 この例では、wav2letter-smallモデルの訓練前チェックポイントがロードされる。 このパラメーターを指定しない場合、モデルは最初からトレーニングされます。
vocab_file: モデルの漢字の語彙。 事前トレーニング済みのwav2letterモデルを使用する場合は、このパラメーターをalphabet4k.txtに設定し、TXTファイルを変更しないでください。 事前トレーニング済みトランスフォーマーモデルを使用する場合は、このパラメーターをalphabet6k.txtに設定し、TXTファイルを変更しないでください。
train_data: トレーニングに使用されるTFRecordファイル。 このパラメーターの値は正規表現である必要があります。 このパラメーターは必要に応じて変更できます。
ステップ3: ASRモデルの評価とエクスポート
トレーニングが完了したら、モデルの認識精度を評価できます。 必要に応じて、データセットをトレーニングデータセットと予測データセットに分割できます。 次のセクションでは、モデルを評価およびエクスポートする方法の例を示します。
ターミナルで次のコマンドを実行して、モデルの認識精度を評価します。
easyasr_eval --config_file='w2lplus-small.py' --checkpoint='model_dir/model.ckpt-1000' --vocab_file='alphabet4k.txt' --eval_data='tfrecords/train_*.tfrecord'
コマンドには次のパラメータが含まれます。
config_file: モデルの設定ファイル。 この例では、w2plus-small.pyという名前のwav2letter-smallモデルの構成ファイルが使用されます。 このパラメーターは必要に応じて変更できます。
checkpoint: 評価およびエクスポートするモデルのチェックポイントのパス。 トレーニング中に複数のチェックポイントが保存されます。 このパラメーターは必要に応じて変更できます。
vocab_file: モデルの漢字の語彙。
重要モデルのトレーニングと評価には、同じ語彙を使用する必要があります。
eval_data: モデルの評価に使用するTFRecordファイル。 このパラメーターの値の形式は、train_dataパラメーターと同じです。
トレーニング済みモデルをSavedModelファイルとしてエクスポートし、そのファイルを使用して分散バッチ予測を実行します。 これを行うには、ターミナルで次のコマンドを実行してモデルをエクスポートします。
easyasr_export --config_file='w2lplus-small.py' --checkpoint='model_dir/model.ckpt-1000' --vocab_file='alphabet4k.txt' --mode='interactive_infer'
コマンドには次のパラメータが含まれます。
config_file: モデルの設定ファイル。 この例では、w2plus-small.pyという名前のwav2letter-smallモデルの構成ファイルが使用されます。 このパラメーターは必要に応じて変更できます。
checkpoint: 評価およびエクスポートするモデルのチェックポイントのパス。 トレーニング中に複数のチェックポイントが保存されます。 このパラメーターは必要に応じて変更できます。
vocab_file: モデルの漢字の語彙。
mode: モデルをエクスポートするモード。 EasyASRの現在のバージョンは、interactive_inferモードのみをサポートしています。 サンプルコマンドで使用するパラメーターの値を変更する必要はありません。
エクスポートしたモデルは、asr_testフォルダーに表示できます。 次の図に示すように、エクスポートされたSavedModelファイルはexport_dirサブフォルダーに保存されます。 次の図に示すように、export_dirサブフォルダーに移動して、エクスポートされたモデルを表示します。
ステップ4: 予測を実行する
エクスポートしたSavedModelファイルを使用して予測を実行できます。 DSWでEasyASRを使用する場合、入出力データはCSVファイルに保存されます。
ターミナルで次のコマンドを実行して、オーディオデコードに使用できるFFmpegをインストールします。
sudo apt update sudo apt install ffmpeg
説明この例では、Ubuntuが使用されています。 別のOSを使用する場合は、OSにFFmpegをインストールするだけです。 FFmpegが既にインストールされている場合は、この手順をスキップします。
Terminalのasr_testフォルダーで次のコマンドを実行し、サンプル入力ファイルをダウンロードします。
wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/dsw_sample_data/input_predict.csv
入力ファイルの各行は、オーディオファイルのURLを示します。
Terminalで次のコマンドを実行し、トレーニング済みのASRモデルを使用して入力ファイルに対して予測を実行します。
easyasr_predict --input_csv='input_predict.csv' --output_csv='output_predict.csv' --num_features=64 --use_model='w2l' --vocab_file='alphabet4k.txt' --export_dir='export_dir' --num_predict_process=3 --num_preproces=3
コマンドには次のパラメータが含まれます。
input_csv: オーディオファイルのURLを含む入力ファイルの名前。 このパラメーターは必要に応じて変更できます。
output_csv: 予測用に生成される出力ファイルの名前。 事前に名前のファイルを作成しなくても、カスタム名を入力できます。
num_features: モデルの音響特徴寸法。 事前トレーニングされたwav2letter-smallまたはwav2letter-baseモデルを使用する場合は、このパラメーターを64に設定します。 事前トレーニング済みのtransformer-smallまたはtransformer-baseモデルを使用する場合は、このパラメーターを80に設定します。 このパラメーターは必要に応じて変更できます。
use_model: モデルのタイプ。 有効な値:
w2l: wav2文字モデル。
変圧器: 変圧器モデル。
この例では、wav2letter-smallモデルを使用して予測を実行するため、このパラメータはw21に設定されます。
vocab_file: モデルの漢字の語彙。
export_dir: エクスポートされたSavedModelファイルのパス。 このパラメーターは必要に応じて変更できます。
num_predict_process: 予測の実行に使用されるスレッドの数。 このパラメーターは必要に応じて変更できます。
num_preproces: オーディオファイルのダウンロードと前処理に使用されるスレッドの数。 このパラメーターは必要に応じて変更できます。