0

Python で「Hi Siri」、「Ok Google」などのトリガー ワードの検出に取り組んでいます。私のアプローチは、トリガーといくつかの出力ワードを wav ファイルに記録することです。次に、それらを読み取り、pyAudioAnalysis を使用して機能を抽出します。最後に、トリガー ワードの特徴のコサイン類似度を、出力のスライディング ウィンドウ用に抽出された特徴と比較します。問題は、まったく同じ単語のコードを以下に示すことです。

def match_transcription(tar,out):
    "returns list of correlations where both audio transcriptions match"
    print(tar.shape)  # trigger word's features (34,num of frames)
    print(out.shape)  # output sound's features (34,num of frames)
    sims=[]  # will have similarities for all features, for all chunks
    for i in range(tar.shape[0]):   # loop over all features
        chunk_tar=tar[i]  # pick one feature from target
        chunk_out=out[i]   # pick same feature from output
        sims1=[]
        chunk_outs=window(chunk_out,tar.shape[1])  # generate sliding window for ouput features

        for chunk in chunk_outs:  # loop over all output features
            sim = 1 - spatial.distance.cosine(chunk, chunk_tar)   # calculate cosine similarity between target and output features
            sims1.append(sim)   # add similarities to list
        sims.append(np.array(sims1))
    sims=np.array(sims)
    means=np.mean(sims,axis=0)  # take mean of all frames features
    print(sims)
    print(means)

出力は次のようになります。

Mean Similarity:  [0.25522565 0.25120983 0.25925772 0.27925796 0.28873657 0.289228
 0.3081794  0.3477496  0.33269364 0.34055122 0.34868945 0.33925324
 0.34162649 0.32976345 0.32332807 0.33668049 0.34458411 0.36058285
 0.37208687 0.37574359 0.400042   0.40289759 0.3872925  0.35079805
 0.36320806 0.36803756 0.35871608 0.35921478 0.36508046 0.39065785
 0.40899824 0.43283008 0.43767465 0.42003872 0.41108351 0.41531505
 0.39725584 0.38569253 0.35555717 0.36983754 0.37081652 0.39188315]

出力は、出力のすべてのスライディング ウィンドウが、同じ単語が話されたトリガー ワードとほとんど類似していないことを示しています。

特徴抽出は、トリガー ワードと出力サウンドの場合と同じです。

def get_features(f_name):
    "returns short term features from the audio"
    [Fs, x] = audioBasicIO.readAudioFile(f_name)
    F, f_names = stFeatureExtraction(x, Fs, 0.050*Fs, 0.025*Fs)
    return F,f_names
F1,f1_names=get_features('trigger_word.wav')  # done for all output sounds as well

私の質問は、34 の機能のうち、トリガー ワードと出力音の類似性をチェックするのに関連する機能はどれですか? または、Pythonで同じジョブを実行できる他の方法はありますか? ありがとう!

4

0 に答える 0