Main Content

オーディオ信号内の発声された単語のラベル付け

この例では、信号ラベラーで発声された単語にラベル付けする方法を示します。この例では、事前学習済みの 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 を選択します。

音声データのインポート

信号をアプリにインポートします。

  1. [ラベラー] タブで [インポート] をクリックし、[メンバー] リストの From Workspace を選択します。ダイアログ ボックスで、信号 y を選択します。

  2. 時間情報を追加します。ドロップダウン リストから Time を選択し、サンプル レートとして fs (Hz 単位) を指定します。

  3. [インポートして閉じる] をクリックします。[ラベル付き信号セット ブラウザー] に信号が表示されます。

発声された単語の検索と特定

入力信号の発声された単語を検索して特定します。

  1. [ラベルの定義] ブラウザーで Words を選択します。

  2. [値の自動処理] ギャラリーで、Speech to Text を選択します。

  3. [自動ラベル付け] をクリックし、Auto-Label All Signals を選択します。

  4. ダイアログ ボックスで、[サービス名] リストから wav2vec 2.0 を選択し、[単語の分割] の横にあるチェック ボックスを選択します。

  5. [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)

Figure contains an axes object. The axes object contains 13 objects of type line.

オーディオ信号と同じ長さの logical ベクトルを作成します。音声信号の該当する部分に単語 "conjugate" が含まれているベクトルを true に設定します。

bsl = binmask(msk,height(s));

plot(s.Time,[s.y bsl(:,v.Value=="conjugate")])

Figure contains an axes object. The axes object contains 2 objects of type line.

参考

アプリ

オブジェクト

関連する例

詳細