Обнаружение DTMF с использованием алгоритма Герцеля

Как я могу использовать алгоритм Герцеля, если формат волны следующий: - 2 канала - 32 бита - 48 кГц

Я уже искал об алгоритме Герцеля, но все, что я могу увидеть в Интернете, это обнаружение DTMF с форматом волны 2 канала, 16 бит и 8 кГц. Я не знаю, какую часть кода мне следует изменить, чтобы соответствовать моим требованиям.

Private Function Goertzel(ByVal sample As Byte(), ByVal N As Long, _
                          ByVal freq As Double, ByVal sampr As Long) As Double
    Dim Skn As Double = 0
    Dim Skn1 As Double = 0
    Dim Skn2 As Double
    Dim c As Double
    Dim c2 As Double
    Dim i As Integer

    c = 2 * Math.PI * freq / sampr
    c2 = Math.Cos(c)

    For i = 0 To (N - 1)
        Skn2 = Skn1
        Skn1 = Skn
        Skn = 2 * c2 * Skn1 - Skn2 + sample(i)
    Next

    Return Skn - Math.Exp(-c) * Skn1
End Function

Private Function power(ByVal val As Double) As Double
    Return 20 * Math.Log(Math.Abs(val)) / Math.Log(10)
End Function

person Gene    schedule 05.03.2014    source источник
comment
Можете ли вы просто преобразовать wav?   -  person Mike Christiansen    schedule 05.03.2014
comment
Я попытался преобразовать волновой формат данного wav. К сожалению, когда я играл в нее, она звучала ужасно, и DTMF не был обнаружен. Кстати, я использую библиотеку TAPIEx.Net только для тестирования.   -  person Gene    schedule 05.03.2014


Ответы (1)


Хорошее описание алгоритма Герцеля (их много в Интернете) должно включать параметризацию частоты дискретизации. , частота фильтрации и продолжительность. Просто оставьте частоту и продолжительность фильтра прежними и измените параметр частоты дискретизации фильтра.

person hotpaw2    schedule 05.03.2014
comment
Я знаю частоту дискретизации, которую я буду использовать, как указано выше. Я думаю, что я буду использовать 100 мс для продолжительности, но если вы знаете какую-то формулу, чтобы получить соответствующую продолжительность для упомянутого выше формата волны, пожалуйста, дайте мне знать. Я понятия не имею о частоте фильтра, если вы можете привести пример, я буду признателен. - person Gene; 06.03.2014
comment
Любой существующий код, который вы найдете, должен включать все частоты тонов DTMF. - person hotpaw2; 06.03.2014
comment
@hotpw2. Всем привет. Я разместил код, который я использую выше. Я знаю, где взять значения для каждого параметра, кроме freq (частота). Любая идея, где я могу получить это? Или есть формула для получения частоты с учетом выборки байтов ()? - person Gene; 06.03.2014
comment
В Википедии есть страница, посвященная DTMF, включая частоты тонов (используются парами, как в D). - person hotpaw2; 07.03.2014