84 lines
2.6 KiB
C#
84 lines
2.6 KiB
C#
using System;
|
|
using System.IO;
|
|
using Vosk;
|
|
|
|
public class VoskDemo
|
|
{
|
|
public static void DemoBytes(Model model)
|
|
{
|
|
// Demo byte buffer
|
|
VoskRecognizer rec = new VoskRecognizer(model, 16000.0f);
|
|
rec.SetMaxAlternatives(0);
|
|
rec.SetWords(true);
|
|
using(Stream source = File.OpenRead("test.wav")) {
|
|
byte[] buffer = new byte[4096];
|
|
int bytesRead;
|
|
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
|
|
if (rec.AcceptWaveform(buffer, bytesRead)) {
|
|
Console.WriteLine(rec.Result());
|
|
} else {
|
|
Console.WriteLine(rec.PartialResult());
|
|
}
|
|
}
|
|
}
|
|
Console.WriteLine(rec.FinalResult());
|
|
}
|
|
|
|
public static void DemoFloats(Model model)
|
|
{
|
|
// Demo float array
|
|
VoskRecognizer rec = new VoskRecognizer(model, 16000.0f);
|
|
|
|
rec.SetEndpointerMode(EndpointerMode.LONG);
|
|
|
|
using(Stream source = File.OpenRead("test.wav")) {
|
|
byte[] buffer = new byte[4096];
|
|
int bytesRead;
|
|
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
|
|
float[] fbuffer = new float[bytesRead / 2];
|
|
for (int i = 0, n = 0; i < fbuffer.Length; i++, n+=2) {
|
|
fbuffer[i] = BitConverter.ToInt16(buffer, n);
|
|
}
|
|
if (rec.AcceptWaveform(fbuffer, fbuffer.Length)) {
|
|
Console.WriteLine(rec.Result());
|
|
} else {
|
|
Console.WriteLine(rec.PartialResult());
|
|
}
|
|
}
|
|
}
|
|
Console.WriteLine(rec.FinalResult());
|
|
}
|
|
|
|
public static void DemoSpeaker(Model model)
|
|
{
|
|
// Output speakers
|
|
SpkModel spkModel = new SpkModel("model-spk");
|
|
VoskRecognizer rec = new VoskRecognizer(model, 16000.0f);
|
|
rec.SetSpkModel(spkModel);
|
|
|
|
using(Stream source = File.OpenRead("test.wav")) {
|
|
byte[] buffer = new byte[4096];
|
|
int bytesRead;
|
|
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
|
|
if (rec.AcceptWaveform(buffer, bytesRead)) {
|
|
Console.WriteLine(rec.Result());
|
|
} else {
|
|
Console.WriteLine(rec.PartialResult());
|
|
}
|
|
}
|
|
}
|
|
Console.WriteLine(rec.FinalResult());
|
|
}
|
|
|
|
public static void Main()
|
|
{
|
|
// You can set to -1 to disable logging messages
|
|
Vosk.Vosk.SetLogLevel(0);
|
|
|
|
Model model = new Model("model");
|
|
DemoBytes(model);
|
|
DemoFloats(model);
|
|
DemoSpeaker(model);
|
|
}
|
|
}
|