このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
オーディオ信号内の発声された単語のラベル付け
この例では、信号ラベラーで発声された単語にラベル付けする方法を示します。この例では、事前学習済みの wav2vec 2.0 ネットワークを使用します。これには、Deep Learning Toolbox™、および事前学習済みのモデルのインストールが必要です。事前学習済みの wav2vec 2.0 モデルのダウンロードとインストールの詳細については、speech2text
(Audio Toolbox)を参照してください。
オーディオ ファイルの読み取り
文 "The discrete Fourier transform of a real valued signal is conjugate symmetric" の音声を含むオーディオ データ ファイルを読み込みます。
[y,fs] = audioread("speech_dft.wav"); % To hear, type soundsc(y,fs)
ラベルの定義
信号ラベラーを開き、信号に付加するラベルを定義します。[ラベラー] タブの [追加] をクリックして、[ラベル定義の追加] をクリックします。[ラベル名] に Words
を指定して、[ラベル タイプ] に ROI
を選択し、[データ型] に string
を選択します。
音声データのインポート
信号をアプリにインポートします。
[ラベラー] タブで [インポート] をクリックし、[メンバー] リストの
From Workspace
を選択します。ダイアログ ボックスで、信号y
を選択します。時間情報を追加します。ドロップダウン リストから
Time
を選択し、サンプル レートとしてfs
(Hz 単位) を指定します。[インポートして閉じる] をクリックします。[ラベル付き信号セット ブラウザー] に信号が表示されます。
発声された単語の検索と特定
入力信号の発声された単語を検索して特定します。
[ラベルの定義] ブラウザーで
Words
を選択します。[値の自動処理] ギャラリーで、
Speech to Text
を選択します。[自動ラベル付け] をクリックし、
Auto-Label All Signals
を選択します。ダイアログ ボックスで、[サービス名] リストから
wav2vec 2.0
を選択し、[単語の分割] の横にあるチェック ボックスを選択します。[OK] をクリックします。
信号ラベラーが発声された単語を検索してラベル付けします。[ラベル付き信号セット ブラウザー] で、信号をプロットする y
の横にあるチェック ボックスを選択します。Words
を展開し、各単語の横にあるチェック ボックスを選択して、対応するラベル付き領域を可視化します。単語 "discrete" が "discreet" と誤ってラベル付けされていることに注意してください。これは、[値] 列の discreet
を右クリックし、[編集] を選択して正しい値 "discrete" を入力することで修正できます。
ラベル付き信号のエクスポート
ラベル付き信号をエクスポートします。[ラベラー] タブで [エクスポート] をクリックし、[ラベル付き信号セット] リストから To File
を選択します。表示されるダイアログ ボックスで、ラベル付き信号セットに Transcription.mat
という名前を付け、オプションで簡単な説明を追加します。[エクスポート] をクリックします。
MATLAB コマンド ウィンドウに戻ります。ラベル付き信号セットを読み込みます。このセットのメンバーは 1 つのみです。ラベルの名前を取得し、その名前を使用して、文字に起こされた単語を取得して表示します。
load Transcription
ln = getLabelNames(ls);
v = getLabelValues(ls,1,ln)
v=12×2 table
ROILimits Value
__________________ ___________
0.34063 0.4208 "the"
0.46088 0.82161 "discrete"
0.88174 1.2826 "fourier"
1.3427 1.984 "transform"
2.0441 2.1042 "of"
2.1644 2.2044 "a"
2.2846 2.485 "real"
2.5251 2.8658 "valued"
2.9259 3.3067 "signal"
3.3869 3.467 "is"
3.5271 4.0081 "conjugate"
4.0482 4.5091 "symmetric"
ラベル値を文字列からカテゴリに変更します。signalMask
オブジェクトを使用して、単語ごとに異なる色を使用して信号をプロットします。
v.Value = categorical(v.Value,v.Value); msk = signalMask(v,SampleRate=fs); s = getSignal(ls,1); plotsigroi(msk,s.y)
オーディオ信号と同じ長さの logical ベクトルを作成します。音声信号の該当する部分に単語 "conjugate" が含まれているベクトルを true
に設定します。
bsl = binmask(msk,height(s));
plot(s.Time,[s.y bsl(:,v.Value=="conjugate")])