alphacep / vosk-api

Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node
Apache License 2.0
7.85k stars 1.1k forks source link

Пустой вывод | { "partial" : "" } | C++ #1168

Closed byPashkevich closed 1 year ago

byPashkevich commented 1 year ago

Здравствуйте! Мне необходимо использовать vosk-api в моём QT C++ проекте. Однако распознавание ничего не возвращает. Помогите решить данную проблему.

Блок кода, отвечающий за распознавание:

Переменная pchDir хранит в себе путь до модели. Переменная pchFile хранит в себе путь до входного .wav файла.

    const char *pchDir = m_qstrDirFile.toLocal8Bit().data();
    const char *pchFile = m_qstrFile.toLocal8Bit().data();

    FILE *wavin;
     char buf[3200];
     //char text[32768];
     int nread, final;

     VoskModel *model = vosk_model_new(pchDir);
     VoskRecognizer *recognizer = vosk_recognizer_new(model, 16000.0);

         wavin = fopen(pchFile, "rb");
         fseek(wavin, 44, SEEK_SET);
         while (!feof(wavin)) {
              nread = fread(buf, 1, sizeof(buf), wavin);
              final = vosk_recognizer_accept_waveform(recognizer, buf, nread);
              if (final) {
                  //printf("%s\n", vosk_recognizer_result(recognizer));
                  std::cout << vosk_recognizer_result(recognizer) << endl;
              } else {
                  //printf("%s\n", vosk_recognizer_result(recognizer));
                std::cout << vosk_recognizer_partial_result(recognizer) << endl;
              }
         }

         //printf("%s \n", vosk_recognizer_result(recognizer));
         std::cout << vosk_recognizer_result(recognizer) << endl;
         ui->text_output->insertPlainText(vosk_recognizer_final_result(recognizer));

         vosk_recognizer_free(recognizer);
         vosk_model_free(model);
         fclose(wavin);
nshmyrev commented 1 year ago

формат входных данных неправильный

byPashkevich commented 1 year ago

@nshmyrev Объясните

byPashkevich commented 1 year ago

Решено.