⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globe.bas

📁 Visual Basic与语音辨识 让电脑听话 (源码) 台湾松岗 http://www.kingsinfo.com.tw
💻 BAS
字号:
Attribute VB_Name = "GLOBE"
Global Const FLEN = 240
Global Const OVL = 160
Global Const DPOS = 5 'ノVC,DPOS = 4
Global Const COFF = 0.95
Global Const PI = 3.141592651
Global Const FLPC = 12
Global Const CEP = 14
Global Const MAXFRAME = 1000
Global Const STATE = 3
Global Const VITERBICRITERIA = 1
Global Const DIMM = 28
Global a, i, j, m, n As Integer
Global mainCEP(CEP - 1), sample(FLEN - 1), CEPP(CEP - 1) As Double
Global sample2(FLEN - 1), totalCEP(MAXFRAME - 1, CEP - 1) As Double
Global framenum() As Integer
Global feature(20, MAXFRAME - 1, 2 * CEP - 1) As Double
Global name1(30), name2(30), name3(30) As String
Global mean(STATE - 1, 2 * CEP - 1) As Double
Global var(STATE - 1, 2 * CEP - 1) As Double
Global mean_r(STATE - 1, 2 * CEP - 1) As Double
Global var_r(STATE - 1, 2 * CEP - 1) As Double
Global fileName(100) As String
Global filetemp As String
Global sstar(20, MAXFRAME)
Global file_num As Byte
Global delta(20, MAXFRAME, STATE - 1)
Global d(20, MAXFRAME, STATE - 1) As Double
Global delta_b, delta_n, def, p_scale(STATE - 1), totdist As Double
Global sizedata As Byte
Global size As Long

Function LPC(sample As Variant, CEPR As Variant)
   Dim i, j, n, m As Integer
   Dim s(FLEN - 1), r(FLPC), e(FLPC), a(FLPC, FLPC), k(FLPC), h(FLPC + 2) As Double
   Dim x, sum As Variant
   
    
        
    s(0) = sample(0)
    For i = 1 To FLEN - 1
    s(i) = sample(i) - COFF * sample(i - 1) '  y(n)=x(n)-0.95x(n-1)
     ' end of for (i)
    Next i

    'hamming windows

    For i = 0 To FLEN - 1 ' y'(n)= y(n)h(n)=y(n)*(0.54-0.46cos(2n*PI/N-1) ,  0<=n<=N-1*/
      s(i) = s(i) * (0.54 - 0.46 * (Cos(((2 * PI * i) / (FLEN - 1)))))
    
    Next i
    ' Durbin's Algorithm
    
    For i = 0 To FLPC  ' start of compute Rn
    
        r(i) = 0
        For j = 0 To FLEN - 1 - i
            r(i) = s(j) * s(j + i) + r(i) '  Rn(k)= SUM ( Sn(m)Sn(m+k))     ,m=0 ~ (N-1-k) */
     Next j
     Next i
    ' end of compute Rn
    
    e(0) = r(0) ' start compute alfa -"a" (FLPC cofficient)*/
    For i = 1 To FLPC
    
        x = 0

        For j = 1 To i - 1
            x = x + a(i - 1, j) * r(i - j) ' sum(a(i-1)(j)*r(i-j))
        
       Next j
       If e(i - 1) = 0 Then
       e(i - 1) = 1000000
       End If
        k(i) = (r(i) - x) / e(i - 1)
        a(i, i) = k(i)
        
        For j = 1 To i - 1
            a(i, j) = a(i - 1, j) - k(i) * a(i - 1, i - j)
         Next j
        e(i) = (1 - k(i) * k(i)) * e(i - 1)
       
     Next i
    ' end of compute alfa

    For i = 0 To FLPC - 1
    
        a(FLPC, i + 1) = -a(FLPC, i + 1)
     '   b(i)=a(FLPC)(i+1)   '   get FLPC cofficient into b(0) ~ b(FLPC-1)*/
    Next i
  
    ' CEPstrum

    h(1) = -a(FLPC, 1)
    
    For n = 2 To FLPC ' 1< n <=p*
    
        sum = 0
        For m = 1 To n - 1 ' sum((1-m/n)*Am*Cn-m   ,  m=1 ~ n-1*/
            sum = sum + (1 - (m * 1) / (n * 1)) * a(FLPC, m) * h(n - m)
        Next m
        h(n) = -a(FLPC, n) - sum ' Cn=An+sum((1-m/n)*Am*Cn-m*/
    Next n
    ' end if 1 < n <=p
    For n = FLPC + 1 To CEP ' n > p

        sum = 0
        For m = 1 To FLPC ' sum(1-m/n)*Am*Cn-m*/
            sum = sum + (1 - (m * 1) / (n * 1)) * a(FLPC, m) * h(n - m)
      Next m
        h(n) = -sum
    ' end of n > p */

    Next n
    For i = 0 To CEP - 1
    
        CEPR(i) = h(i + 1) ' put CEPtrum into CEP(i) and return
    Next i

' end of  submain FLPC
End Function
Function deltacep(l As Integer, m As Byte, d As Variant)

'l=Τ碭

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -