私は一週間ずっとこの問題を理解しようとしてきました。私の主な問題は、信号のノイズから音を分離することです(プロットされた例を参照してください:
これらの小さなノイズの間には dtmf トーンがあります。トーンの開始点と終了点のインデックスを取得したら、それらを変換するのは簡単です。
ノイズの開始点または開始点をどのように正確に判断すればよいのでしょうか?各ノイズはさまざまな長さである可能性があり、実際の音には突然の低下がたくさんあります。小さな塊を取るという概念は理解できますが、音からノイズを判断する方法でそれらを比較するにはどうすればよいでしょうか。特定の数の下でインデックスが連続している時間を比較することで、沈黙を微調整できますか? この問題を開始する方法がわかりません。
function [phone_number,ERROR] = cjm274_dtmf_number(dtmf_signal,fs)
Input:
% dtmf_signal - samples of the input waveform
% fs - sampling frequency
% Output:
% phone_number - string of characters representing a phone number
% ERROR - set to zero if phone_number does not represent a valid
% phone number