Imports NAudio.Wave
Public Class WaveRecord
Dim IsClose As Boolean = False
Dim wav As New WaveIn
Dim _dataArrivefun As DataArrive
Public Sub Start(dataArriveFun As DataArrive)
IsClose = False
_dataArrivefun = dataArriveFun
wav.BufferMilliseconds = 200 '200 = 6400;100 = 3200
wav.NumberOfBuffers = 12 '缓冲区大小
wav.WaveFormat = New WaveFormat(16000, 16, 1) '格式 16000
AddHandler wav.DataAvailable, AddressOf waveIn_DataAvailable
wav.StartRecording() '录音启动
End Sub
''' <summary>
''' 回调函数
''' </summary>
''' <param name="lpdata"></param>
''' <param name="datalen"></param>
''' <returns></returns>
Public Delegate Function DataArrive(lpdata As Byte(), datalen As Integer)
Private Sub waveIn_DataAvailable(sender As Object, e As WaveInEventArgs)
If IsClose Then
Return
End If
_dataArrivefun(e.Buffer, e.BytesRecorded)
End Sub
Public Sub Close()
IsClose = True
wav.StopRecording()
End Sub
End Class