alphacep/vosk-asterisk

Распознавание идет только 20 секунд

epigraphe opened this issue · 7 comments

Прямо перед запуском столкнулись со следующей проблемой: распознавание речи идет всегда только в пределах 20 секунд.
После этого сессия закрывается и все отрабатывает как и положено.
То есть распознавание прерывается не аварийно.

Вопрос № 13 читал, [res_http_websocket.c:] пересобрал отдельно из последнего астериска.

Гугление не дает вообще ничего, в 13 вопросе никакой информации так и не появилось(

 {
      "conf" : 1.000000,
      "end" : 18.060000,
      "start" : 17.520000,
      "word" : "один"
    }, {
      "conf" : 1.000000,
      "end" : 18.720000,
      "start" : 18.180000,
      "word" : "один"
    }, {
      "conf" : 1.000000,
      "end" : 19.350000,
      "start" : 18.870000,
      "word" : "один"
    }, {
      "conf" : 1.000000,
      "end" : 20.160000,
      "start" : 19.710000,
      "word" : "один"
    }],
  "text" : "один один один один один один один один один один один один один один один один один один один один один один один один один один один один"
}'
[2023-08-04 09:29:17] NOTICE[21731][C-00000054]: res_speech_vosk.c:175 vosk_recog_write: (vosk) Recognition result: один один один один один один один один один один один один один один один один один один один один один один один один один один один один

Подскажите, пожалуйста, хоть в какую сторону думать? Может буфер какой-то увеличить или в астере что-то поменять?
https://www.voip-info.org/forum/threads/vosk-free-stt-speech-to-text-server.26680/post-167418
Ставилось по этой инструкции этим скриптом, может чего-то там неправильно стоит?

Так по умолчанию и должно быть. asterisk speech API только на одну фразу работает, в основном разработано для IVR. Для потокового распознавания можно ARI использовать, пример в vosk-server есть.

А нельзя просто увеличить это время до 30 секунд?

SpeechDestroy()

This destroys the information used by all the other speech recognition applications. If you call this application but end up wanting to recognize more speech, you must call SpeechCreate again before calling any other application. It takes no arguments.

Вот это не сработает?

Я извиняюсь за настырность, но я спросил на форуме астериска, и они говорят следующее:

I don’t know what that output is, I assume vosk which I can’t really comment on. I don’t think there is anything otherwise within the Asterisk speech API that would cause such a thing.

В model.conf добавить

--endpoint.rule5.min-utterance-length=30.0

и будет 30 вместо 20.

К сожалению - не помогло.
}, {
"conf" : 1.000000,
"end" : 20.130000,
"start" : 19.770000,
"word" : "два"
}],
Так и заканчивается без ошибок ровно на 21 секунде

Сессию может SIP закрывать, надо проверять в логах, что вызвало таймаут.

В целом, та же проблема, что и #13