alphacep / alphacep/vosk-api

Use vosk_recognizer_accept_waveform_f interface but got bad result

Offen
#1,417 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Jupyter Notebook
Sterne
15.1k
Forks
1.8k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Hi , I used C++ to call your compiled library in windows ,when I use the vosk_recognizer_accept_waveform interface(accept const char* data), the recognize result is perfect, but when I use vosk_recognizer_accept_waveform_f (accept const float * data), the result is not very accurate. So I wandering if there is a problem with how I use the vosk_recognizer_accept_waveform_f ??

here is my code :
`
int vosk(std::string wavFile, std::string modelPath)
{

std::ifstream wavin(wavFile, std::ios::binary);
char buf[48000];
int final, nread;

VoskModel* model = vosk_model_new(modelPath.data());
VoskRecognizer* recognizer = vosk_recognizer_new(model, 16000);

//wavin.seekg(44, std::ios::beg);
while (!wavin.eof())
{
wavin.read(buf, sizeof(buf));
nread = wavin.gcount();
int flen = nread / 2;
float floatBuf[48000];
for (int i = 0; i < nread/2; i++)
{
floatBuf[i] = static_cast(reinterpret_cast(buf)[i]);
}

final = vosk_recognizer_accept_waveform_f(recognizer, floatBuf, nread/sizeof(float));
std::cout << "final is " << final << std::endl;
if (final)
{
std::cout << coutCH(vosk_recognizer_result(recognizer)) << std::endl;;
}
else
{
std::cout << coutCH(vosk_recognizer_partial_result(recognizer)) << std::endl;
}
}

final = vosk_recognizer_accept_waveform(recognizer, buf, nread);
vosk_recognizer_free(recognizer);
vosk_model_free(model);
return 0;
}
`

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.