문제

저는 엔지니어링 학생이고 신호 처리와 관련하여 학업 문제를 해결해야합니다.

기본적으로 DTMF 신호가 WAV 형식으로 주어지면 인코딩 된 숫자 시퀀스를 식별해야합니다. 나는 MATLAB 환경에서 이산 푸리에 변환 분석을 사용하여 WAV 파일을 읽는 스크립트를 만들고 프로세스를 통해 숫자를 다이얼 톤의 숫자를 식별하기 위해 그렇게해야합니다.

저는 Matlab 환경으로 정말로 안락한 것이 아니며 전체 이산 푸리에 분석이 나에게 매우 새로운 것입니다. 그래서 나는 잃어버린 것을 느낍니다.

누구든지 공유 할 수있는 좋은 팁이나 포인터가 있습니까?

도움이 되었습니까?

해결책

DFT (또는 FFT)는 DTMF 검출을 위해 과도한 것입니다.낮은 음색을 탐지하기 위해 2 x 4 개의 Goertzel 필터가 필요합니다.각 Goertzel 필터의 출력은 노이즈의 탐지를 방지하기 위해 저역 통과 여과가 필요하지만, 꽤 간단합니다.

DFT / FFT의 사용이 필수 사항이면 일반적인 방법은 다음과 같습니다.

    입력 샘플의 각 블록에 대해
    • 적합한 창문 (예 : Hanning)
    • DFT를 수행
    • 를 수행합니다
    • 각 DFT 빈의 크기 계산 (RE * RE + IM * IM)
    • 2 x 4 dtmf 톤
    • 에 해당하는 8 개의 빈 각각에서 크기를 측정합니다.
    • 그룹의 다른 톤보다 높은 그룹 톤과 하나의 낮은 그룹 톤이있는 경우 DTMF 톤 쌍이 감지되었습니다

다른 팁

실제 데이터의 크기 DFT는 길이 n의 N / 2 직교 구 Teertzel 필터와 훨씬 훨씬 훨씬 똑같이 며칠이고 FFT는 단지 빠른 DFT 알고리즘입니다.

사양의 일부로 FFT를 사용해야하는 경우 필요한 DTMF 톤을 캡처하는 데 필요한 Goertzel 필터의 주파수에 해당하는 FFT 빈에주의를 기울이고 복잡한 결과를 확장으로 변환합니다.

fft_bin_frequency = fft_bin_number * sample_rate / fft_length ;
.

Sanity 총 FFT 크기 에너지에 대한 의심되는 톤을 확인하십시오.비율이 "작음"이면 DTMF 톤 대신 FFT BIN에서는 노이즈 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top