0

波形フォーマットが次の場合、Goertzel Algorithm を使用するにはどうすればよいですか? - 2 チャンネル - 32 ビット - 48 kHz

Goertzel アルゴリズムについてはすでに検索しましたが、インターネット全体で見られるのは、2 チャネル、16 ビット、および 8 kHz の波形形式の DTMF の検出だけです。要件を満たすためにコードのどの部分を変更すればよいかわかりません。

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
4

1 に答える 1

0

Goertzel アルゴリズム (Web 上に多数あります) の適切な説明には、サンプル レート、フィルター周波数、および持続時間のパラメーター化が含まれている必要があります。フィルターの周波数と持続時間はそのままにして、フィルターのサンプルレートパラメーターを変更するだけです。

于 2014-03-05T18:54:52.753 に答える