Dear all,

The download here allows you to verify vText before production use. The download here is free and now has no limit on the number of times the files can be downloaded. You can configure vText to either function as voice password or voice to text by setting the lower limit and upper limit ratio of frequency spectra comparison between the source signal and the input signal. However, vText is primarily designed to function as voice password. To function as voice to text, you need to pre-record each user's voice first for each voice command.

 

 

Installation Procedures for .Net:

1. Download Matlab Component Runtime (MCR) for vText for Windows 7

2. The vText_pkg.exe will emerge, double click to run it. This will install the Matlab Component Runtime (MCR), after this  MWArray.dll, MWComMgr.dll, MWComUtil.dll, vText.dll (Download only vText.dll here) and vTextNative.dll will emerge in the installed MCR directory.

 

3. Then you can start using the 4 dll files, the vText.dll, which can be used on any computer without license restriction. The decision to go open source is to enable voice password usage on internet convenient and practical, and also because of the need to contribute to society.

 

4. To achieve a successful comparison within 3 attempts, you may need to design your database to store at least 2 voice samples for each user. These 2 samples must match >= 77% then when in use for comparison, the benchmark should set at 70. This will avoid user frustration and at the same time achieve reliability because at 70% it is easier to pass through and so far tests have shown no 2 voice samples from 2 different users have reached >= 70%. If there is, you can adjust to increase to an optimum value.

 

Note: 5 seconds recording will create 40,000 samples, being 8000Hz * 5s. Each sample has a magnitude derived from complex modulus. These samples represent the frequency spectra of the time domain signals. The recognition or comparison is done on the frequency spectra, therefore you can input your voice signal at anytime within the 5s or 10s.

 

.Net Usage Example

 

Add Reference
1. vText.dll
2. MWArray.dll
3. MWComMgr.dll

4. MWComUtil.dll

Import
Imports vText
Imports System
Imports System.Reflection
Imports MathWorks.MATLAB.NET.Utility
Imports MathWorks.MATLAB.NET.Arrays

Class Declaration
Dim mwcaRecord As New MWCharArray
Dim mwcaSource As New MWCharArray
Dim mwcaCompare As New MWCharArray

Dim mwcaFiltered As New MWCharArray
Dim mwcaLower As New MWCharArray
Dim mwcaUpper As New MWCharArray
Dim mwnaSource As New MWNumericArray
Dim mwnaCompare As New MWNumericArray
Dim mwnaResult As New MWNumericArray
Imports MathWorks.MATLAB.NET.Arrays

 

Recording

Dim strRecord As String = "d:\wav\sunshine1.wav"

Try

Dim oVText As vTextClass = New vTextClass 

mwcaRecord = New MWCharArray(strRecord)

oVText.dataAcq(mwcaRecord)

 

Catch ex As Exception

MsgBox(ex.ToString)

End Try

 

View wave form
Dim strSource As String = "d:\wav\sunshine5.wav"

Try

Dim oVText As vTextClass = New vTextClass

mwcaSource = New MWCharArray(strSource)

oVText.viewWave(mwcaSource)

Catch ex As Exception

MsgBox(ex.ToString)

End Try

 

 

Recognize
Dim strSource As String = "d:\wav\sunshine5.wav"

Dim strCompare As String = "d:\wav\sunshine6.wav"

Dim strLower As String = "0.5" '0.5 for voice password; 0.25 for voice to text

Dim strUpper As String = "1.5" '1.5 for voice password; 1.75 for voice to text

Dim oVText As vTextClass = New vTextClass

Try

mwcaSource = New MWCharArray(strSource)

mwcaCompare = New MWCharArray(strCompare)    

mwcaLower = New MWCharArray(strLower)

mwcaUpper = New MWCharArray(strUpper)

mwnaResult = oVText.recognizePartial10k(mwcaSource, mwcaCompare, mwcaLower, mwcaUpper)

lblResult.Text = mwnaResult.ToString & " / 100 matched."

Catch ex As Exception

End Try

 

Filter Background Noise
Dim strSource As String = "d:\wav\sunshine5.wav"

Dim strFiltered As String = "d:\wav\Filtered.wav"

Try

Dim oVText As vTextClass = New vTextClass

mwcaSource = New MWCharArray(strSource)

mwcaFiltered = New MWCharArray(strFiltered)

oVText.filterbgnoise(mwcaSource, mwcaFiltered)

Catch ex As Exception

MsgBox(ex.ToString)

End Try

 

 

Auto detect voice input and recognize

Dim strSource As String = "d:\wav\sunshine1.wav"

Dim aSource As New MWCharArray

Dim aLowerLimit As MWNumericArray = Nothing

Dim aUpperLimit As MWNumericArray = Nothing

Dim aPassDetect As MWNumericArray = Nothing

Dim aPassMark As MWNumericArray = Nothing

Dim aMaxTry As MWNumericArray = Nothing

Dim aPeriod As MWNumericArray = Nothing

Dim aCompareMethod As MWNumericArray = Nothing

Dim oVText As vTextClass = New vTextClass

Try

aSource = New MWCharArray(strSource)

aLowerLimit = New MWNumericArray(0.5)

aUpperLimit = New MWNumericArray(1.5)

aPassDetect = New MWNumericArray(5)

aPassMark = New MWNumericArray(77) ' out of 100%

aMaxTry = New MWNumericArray(10)

aPeriod = New MWNumericArray(5) '5 or 10 seconds supported

aCompareMethod = New MWNumericArray(3)

mwnaResult = oVText.autoDetect(aSource, aMaxTry, aLowerLimit, aUpperLimit, aPassDetect, aPassMark, aPeriod, aCompareMethod)

lblResult.Text = mwnaResult.ToString & " / 100 matched."

Catch ex As Exception

MsgBox(ex.ToString)

End Try

 

Auto detect voice input and generate wav file

Dim strSource As String = "d:\wav\sunshine1.wav"  'File name to generate

Dim aSource As New MWCharArray

Dim aPassDetect As MWNumericArray = Nothing

Dim aPeriod As MWNumericArray = Nothing

Dim oVText As vTextClass = New vTextClass

Try

aSource = New MWCharArray(strSource)

aPassDetect = New MWNumericArray(5)

aPeriod = New MWNumericArray(5) '5 or 10 seconds supported

mwnaResult = oVText.autoDetectWrite(aSource, aPassDetect, aPeriod)

lblResult.Text = mwnaResult.ToString

'if lblresult = 1, wav file is generated, else nothing

Catch ex As Exception

MsgBox(ex.ToString)

End Try


 

Complex Modulus (Frequency Spectra)
Try

mwcaSource = New MWCharArray(strSource)

mwnaResult = oVText.complexmodulus(mwcaSource)

Dim ret(,) As Double = CType(mwnaResult.ToArray(MWArrayComponent.Real), Double(,))

For i = 0 To 39999

Debug.Print("magnitude of sample " & (i + 1) & "=" & ret(i, 0))

Next

Catch ex As Exception

           Debug.Print("ex=" & ex.Message)

End Try

 

 

 


All the best to your project. Thank you for choosing vText from Basic Signal Processing Services.


Sincerely,
Andreas Kok

Algorithm Design Researcher

Email: enquiry@basic-signalprocessing.com