alphacep / alphacep/vosk-api

Use vosk_recognizer_accept_waveform_f interface but got bad result

Abierto
#1,417 3 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Jupyter Notebook
Estrellas
15.1k
Forks
1.8k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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;
}
`

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.