AI用機械学習プラットフォーム (PAI) は、音声インテリジェンス用の拡張アルゴリズムフレームワークであるEasyASRを提供します。 EasyASRは、モデルトレーニングと予測のためのさまざまな機能を提供します。 EasyASRを使用して、音声インテリジェンスアプリケーションの音声インテリジェンスモデルをトレーニングおよび適用できます。 たとえば、BGM検出用のモデルをトレーニングできます。 このトピックでは、Data Science Workshop (DSW) の音声分類にEasyASRを使用する方法について説明します。
前提条件
DSWインスタンスが作成され、ソフトウェアバージョンの要件が満たされます。 詳細については、「DSWインスタンスの作成」と「制限」をご参照ください。
GPU高速化DSWインスタンスの使用を推奨します。
制限事項
ソフトウェアのバージョンに関連する次の項目に注意してください。
Python 3.6がサポートされています。
TensorFlow 1.12がサポートされています。
PyTorchのすべてのバージョンはサポートされていません。
DSWの
tensorflow:1.12PAI-gpu-py36-cu101-ubuntu18.04
イメージを使用することを推奨します。
手順
DSWで音声分類にEasyASRを使用するには、次の手順を実行します。
モデルトレーニング用のデータをダウンロードします。
ステップ2: データセットを構築してモデルをトレーニングする
トレーニングデータをTFRecordファイルに変換し、音声分類モデルをトレーニングします。
トレーニングが完了したら、モデルの分類精度を評価します。 モデルに満足している場合は、分散バッチ予測の実行に使用できるSavedModelファイルとしてモデルをエクスポートします。
エクスポートしたSavedModelファイルを使用して予測を実行します。
ステップ1: データの準備
この例では、デモデータセットを使用して音声分類モデルをトレーニングします。 独自のデータを使用してモデルをトレーニングすることを推奨します。
Data Science Workshop (DSW) の開発環境に移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
ページの左上隅で、PAIを使用するリージョンを選択します。
左側のナビゲーションウィンドウで、 .
(オプション) [Data Science Workshop (DSW)] ページで、検索ボックスにDSWインスタンスの名前またはキーワードを入力して、DSWインスタンスを検索します。
DSWインスタンスを見つけて、開くで、アクション列を作成します。
DSWの開発環境で、[その他] セクションの [ターミナル] をクリックしてターミナルを起動します。
データをダウンロードします。
左上隅のツールバーで、アイコンをクリックしてプロジェクトフォルダを作成します。 この例では、フォルダの名前はasr_testです。
ターミナルで次のコマンドを実行します。
cd
コマンドを使用して作成したフォルダーに移動し、wget
コマンドを使用して音声分類モデルのトレーニングに使用するデモデータセットをダウンロードします。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_cls_data.csv
Terminalで次のコマンドを実行して、dataという名前のサブフォルダーを作成し、デモデータセットをサブフォルダーに解凍します。
mkdir data tar xvzf demo_data.tar.gz -C data
モデルトレーニングに使用する構成ファイルをダウンロードします。
PAIは、モデルトレーニングに使用できる時間遅延ニューラルネットワーク (TDNN) ベースの構成ファイルを提供します。 設定ファイルをダウンロードするには、ターミナルで次のコマンドを実行します。
wget https://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/public_model_zoo/audio_cls/w2lplus_cls.py
プロジェクトフォルダasr_test内のサブフォルダとファイルを表示します。
プロジェクトフォルダには、次のサブフォルダとファイルが含まれます。
data: モデルトレーニングに使用される音声ファイルを格納するサブフォルダー。 一般に、モデルトレーニング用の音声ファイルは、最大15秒の長さと16,000 HZのサンプリングレートを有するWAVフォーマットのモノラル音声ファイルである。
sample_asr_cls_data.csv: すべてのWAVファイルのパスとカテゴリラベルを格納するファイル。
w2lplus_cls.py: トレーニングする音声分類モデルの設定ファイル。
ステップ2: データセットの構築とモデルのトレーニング
EasyASRのデータ変換機能を使用して、準備したデータをTFRecordファイルに変換します。 これを行うには、asr_testフォルダーで次のコマンドを実行します。
easyasr_create_dataset --input_path='sample_asr_cls_data.csv' --output_prefix='tfrecords/'
コマンドには次のパラメータが含まれます。
input_path: トレーニングデータを指定するCSVファイルの名前。 このファイルには、トレーニングに使用するすべてのWAVファイルのパスとカテゴリラベルが含まれています。
output_prefix: 出力TFRecordファイルのパスのプレフィックス。 この例では、すべてのTFRecordファイルがtfrecordsフォルダーにエクスポートされます。 このパラメーターは必要に応じて変更できます。
説明パスの末尾のスラッシュ (/) を省略しないでください。
Terminalで次のコマンドを実行して、音声分類モデルをトレーニングします。
easyasr_train --config_file='w2lplus_cls.py' --log_dir='model_dir' --num_audio_features=80 --label_set='0,1' --train_data='tfrecords/train_*.tfrecord'
コマンドには次のパラメータが含まれます。
config_file: トレーニングする音声分類モデルの構成ファイル。 この例では、TDNNベースの設定ファイルw2plus_cls.pyが使用されています。 このパラメーターは必要に応じて変更できます。
log_dir: 出力モデルチェックポイントのパス。 このパラメーターは必要に応じて変更できます。
num_audio_features: モデルのオーディオフィーチャのディメンション。 このパラメーターは必要に応じて変更できます。
label_set: 音声分類に使用されるラベルのセット。 指定したラベルはコンマ (,) で区切る必要があります。 このパラメーターは必要に応じて変更できます。
train_data: トレーニングに使用するTFRecordファイル。 このパラメーターの値は正規表現である必要があります。 このパラメーターは必要に応じて変更できます。
ステップ3: モデルを評価してエクスポートする
トレーニングが完了したら、モデルの分類精度を評価できます。 必要に応じて、データセットをトレーニングデータセットと予測データセットに分割できます。 次のセクションでは、モデルを評価およびエクスポートする方法の例を示します。
ターミナルで次のコマンドを実行して、モデルの分類精度を評価します。
easyasr_eval --config_file='w2lplus_cls.py' --checkpoint='model_dir/model.ckpt-100' --num_audio_features=80 --label_set='0,1' --eval_data='tfrecords/train_*.tfrecord'
コマンドには次のパラメータが含まれます。
config_file: モデルの構成ファイル。 この例では、TDNNベースの設定ファイルw2plus_cls.pyが使用されています。 このパラメーターは必要に応じて変更できます。
checkpoint: 評価およびエクスポートするモデルのチェックポイントのパス。 トレーニング中に複数のチェックポイントが保存されます。 このパラメーターは必要に応じて変更できます。
num_audio_features: モデルのオーディオフィーチャのディメンション。 このパラメーターは必要に応じて変更できます。
label_set: 音声分類に使用されるラベルのセット。 指定したラベルはコンマ (,) で区切る必要があります。 このパラメーターは必要に応じて変更できます。
eval_data: モデルの評価に使用するTFRecordファイル。 このパラメーターの値の形式は、train_dataパラメーターと同じです。
トレーニング済みモデルをSavedModelファイルとしてエクスポートし、そのファイルを使用して分散バッチ予測を実行できるようにします。 これを行うには、ターミナルで次のコマンドを実行してモデルをエクスポートします。
easyasr_export --config_file='w2lplus_cls.py' --checkpoint='model_dir/model.ckpt-100' --num_audio_features=80 --label_set='0,1' --cls --mode='interactive_infer'
コマンドには次のパラメータが含まれます。
config_file: モデルの構成ファイル。 この例では、TDNNベースの設定ファイルw2plus_cls.pyが使用されています。 このパラメーターは必要に応じて変更できます。
num_audio_features: モデルのオーディオフィーチャのディメンション。 このパラメーターは必要に応じて変更できます。
label_set: 音声分類に使用されるラベルのセット。 指定したラベルはコンマ (,) で区切る必要があります。 このパラメーターは必要に応じて変更できます。
cls: 現在のモデルが音声分類モデルであることを指定します。 音声分類モデルをエクスポートする場合は、-- clsを指定する必要があります。
mode: モデルをエクスポートするモード。 EasyASRの現在のバージョンは、interactive_inferモードのみをサポートしています。 サンプルコマンドで使用するパラメーターの値を変更する必要はありません。
エクスポートしたモデルは、asr_testフォルダーに表示できます。 次の図に示すように、エクスポートされたSavedModelファイルは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で次のコマンドを実行し、トレーニングしたモデルを使用して入力ファイルで予測を実行します。
easyasr_predict --input_csv='input_predict.csv' --output_csv='output_predict.csv' --num_features=80 --use_model='cls' --num_audio_features=80 --label_set='0,1' --seg_time_in_seconds=10 --export_dir='export_dir' --num_predict_process=3 --num_preproces=3
コマンドには次のパラメータが含まれます。
input_csv: オーディオファイルのURLを含む入力ファイルの名前。 このパラメーターは必要に応じて変更できます。
output_csv: 予測用に生成される出力ファイルの名前。 事前に名前のファイルを作成しなくても、カスタム名を入力できます。
num_features: モデルの音響フィーチャ寸法。
use_model: モデルの型。 この例では、モデルが音声分類モデルであるため、このパラメータは「cls」に設定される。
num_audio_features: モデルのオーディオフィーチャのディメンション。 このパラメーターは必要に応じて変更できます。
label_set: 音声分類に使用されるラベルのセット。 指定したラベルはコンマ (,) で区切る必要があります。 このパラメーターは必要に応じて変更できます。
seg_time_in_seconds: 一度に予測が実行されるオーディオの長さ。 このパラメーターは必要に応じて変更できます。 このパラメーターを10に設定すると、長さ15秒のオーディオファイルの最初の10秒と最後の5秒で別々に予測が実行されます。
export_dir: エクスポートされたSavedModelファイルのパス。 このパラメーターは必要に応じて変更できます。
num_predict_process: 予測の実行に使用されるスレッドの数。 このパラメーターは必要に応じて変更できます。
num_preproces: オーディオファイルのダウンロードと前処理に使用されるスレッドの数。 このパラメーターは必要に応じて変更できます。