Skip to content

Commit cb41d8c

Browse files
committed
Added C# test
1 parent 8913b93 commit cb41d8c

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

csharp/Makefile

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
KALDI_ROOT ?= $(HOME)/kaldi
2+
CFLAGS := -std=c++11 -g -O2 -DPIC -fPIC -Wno-unused-function
3+
CPPFLAGS := -I$(KALDI_ROOT)/src -I$(KALDI_ROOT)/tools/openfst/include -I../src -DFST_NO_DYNAMIC_LINKING
4+
5+
KALDI_LIBS = \
6+
${KALDI_ROOT}/src/online2/kaldi-online2.a \
7+
${KALDI_ROOT}/src/decoder/kaldi-decoder.a \
8+
${KALDI_ROOT}/src/ivector/kaldi-ivector.a \
9+
${KALDI_ROOT}/src/gmm/kaldi-gmm.a \
10+
${KALDI_ROOT}/src/nnet3/kaldi-nnet3.a \
11+
${KALDI_ROOT}/src/tree/kaldi-tree.a \
12+
${KALDI_ROOT}/src/feat/kaldi-feat.a \
13+
${KALDI_ROOT}/src/lat/kaldi-lat.a \
14+
${KALDI_ROOT}/src/hmm/kaldi-hmm.a \
15+
${KALDI_ROOT}/src/transform/kaldi-transform.a \
16+
${KALDI_ROOT}/src/cudamatrix/kaldi-cudamatrix.a \
17+
${KALDI_ROOT}/src/matrix/kaldi-matrix.a \
18+
${KALDI_ROOT}/src/fstext/kaldi-fstext.a \
19+
${KALDI_ROOT}/src/util/kaldi-util.a \
20+
${KALDI_ROOT}/src/base/kaldi-base.a \
21+
${KALDI_ROOT}/tools/openfst/lib/libfst.a \
22+
${KALDI_ROOT}/tools/openfst/lib/libfstngram.a \
23+
${KALDI_ROOT}/tools/OpenBLAS/libopenblas.a \
24+
-lgfortran
25+
26+
all: test.exe
27+
28+
test.exe: libkaldiwrap.so test.cs
29+
mcs test.cs gen/*.cs
30+
31+
VOSK_SOURCES = \
32+
vosk_wrap.cc \
33+
../src/kaldi_recognizer.cc \
34+
../src/kaldi_recognizer.h \
35+
../src/model.cc \
36+
../src/model.h \
37+
../src/spk_model.cc \
38+
../src/spk_model.h
39+
40+
libkaldiwrap.so: $(VOSK_SOURCES)
41+
$(CXX) -fpermissive $(CFLAGS) $(CPPFLAGS) -shared -o $@ $(VOSK_SOURCES) $(KALDI_LIBS)
42+
43+
vosk_wrap.cc: ../src/vosk.i
44+
swig -csharp -dllimport "libkaldiwrap.so" \
45+
-namespace "Kaldi" -c++ -outdir gen -o vosk_wrap.cc ../src/vosk.i
46+
47+
clean:
48+
$(RM) *.so vosk_wrap.cc *.o gen/*.cs test.exe

csharp/test.cs

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System;
2+
using System.IO;
3+
using Kaldi;
4+
5+
public class Test
6+
{
7+
public static void Main()
8+
{
9+
10+
Model model = new Model("model");
11+
KaldiRecognizer rec = new KaldiRecognizer(model, 16000.0f);
12+
13+
using(Stream source = File.OpenRead("test.wav")) {
14+
byte[] buffer = new byte[4096];
15+
int bytesRead;
16+
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
17+
if (rec.AcceptWaveform(buffer, bytesRead)) {
18+
Console.WriteLine(rec.Result());
19+
} else {
20+
Console.WriteLine(rec.PartialResult());
21+
}
22+
}
23+
}
24+
Console.WriteLine(rec.FinalResult());
25+
26+
rec = new KaldiRecognizer(model, 16000.0f);
27+
28+
using(Stream source = File.OpenRead("test.wav")) {
29+
byte[] buffer = new byte[4096];
30+
int bytesRead;
31+
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
32+
float[] fbuffer = new float[bytesRead / 2];
33+
for (int i = 0, n = 0; i < fbuffer.Length; i++, n+=2) {
34+
fbuffer[i] = (short)(buffer[n] | buffer[n+1] << 8);
35+
}
36+
if (rec.AcceptWaveform(fbuffer, fbuffer.Length)) {
37+
Console.WriteLine(rec.Result());
38+
GC.Collect();
39+
} else {
40+
Console.WriteLine(rec.PartialResult());
41+
}
42+
}
43+
}
44+
Console.WriteLine(rec.FinalResult());
45+
}
46+
}

0 commit comments

Comments
 (0)