Comments (16)
./stt_streaming_recognize_interim_results.py с тем же ключом работает успешно.
from asterisk-voicekit-modules.
Вот тут косяк в примере - исправим:
Log(NOTICE,WaitEvent() WAITEVENTSTATUS == ${WAITEVENTSTATUS}; ${WAITEVENTBODY});
Должно быть так:
Log(NOTICE,WaitEvent() WAITEVENTSTATUS == ${WAITEVENTSTATUS}; ${WAITEVENTFAILREASON});
Но, вероятно, там причина статуса FAIL - таймаут, т. к. ограничение по времени задано в 10 секунд:
Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 10]);
Поставьте пожалуйста 60 секунд для наглядности
Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 60]);
from asterisk-voicekit-modules.
Answer();
Playback(you-entered);
WaitEventInit(); // Initialize event queue
GRPCSTTBackground(); // Initialize background recognition
PlayBackgroundInitGRPCTTS();
PlayBackground(say,,{"text":"глаголь кожанный мешок, я буду понимать что ты говоришь "});
Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 60]); // Set end time to a minute after now
Set(SLEEP_TIME=$[${CALL_END_TIME} - ${GET_TIME_NSEC(MONOTONIC)}]); // Calculate maximum wait time
while (${SLEEP_TIME} > 0) { // While not timed out yet
WaitEvent(${SLEEP_TIME}); // Wait until next event or timeout
if (${WAITEVENTSTATUS} == SUCCESS) {
Set(CurrentUTCTime=${GET_TIME_NSEC(UTC)});
Set(CurrentUTCTimeString=${STRFTIME(${CurrentUTCTime},GMT,%FT%T)}.${CurrentUTCTime:-9:});
switch (${WAITEVENTNAME}) {
case GRPCSTT_X_REQUEST_ID:
Log(NOTICE,[${CurrentUTCTimeString}] x-request-id = ${WAITEVENTBODY});
break;
case GRPCSTT_UTF8:
Log(NOTICE,[${CurrentUTCTimeString}] Phrase(UTF-8 encoded) = ${WAITEVENTBODY});
break;
default:
}
} else {
//Log(NOTICE,WaitEvent() WAITEVENTSTATUS == ${WAITEVENTSTATUS}; ${WAITEVENTBODY});
Log(NOTICE,WaitEvent() WAITEVENTSTATUS == ${WAITEVENTSTATUS}; ${WAITEVENTFAILREASON});
}
Set(SLEEP_TIME=$[${CALL_END_TIME} - ${GET_TIME_NSEC(MONOTONIC)}]); // Update maximum wait time
}
Hangup();
}
-- Executing [44459@office:18] Log("PJSIP/7705-00000028", "NOTICE,WaitEvent() WAITEVENTSTATUS == FAIL; TIMEOUT") in new stack
or
-- Executing [44459@office:18] Log("PJSIP/7705-00000026", "NOTICE,WaitEvent() WAITEVENTSTATUS == FAIL; POLL_ERROR") in new stack
from asterisk-voicekit-modules.
поставил 60 секунд и все равно Fail но уже понятно причина. есть способы решения её?
from asterisk-voicekit-modules.
А пришлите новый лог пожалуйста - скорее всего, там уже приходят события с распознанным текстом.
У вас dialplan так написан так, что единственное условие выхода помимо ошибок - именно таймаут.
То есть WAITEVENTSTATUS == FAIL, WAITEVENTFAILREASON == TIMEOUT
- корректная ситуация: FAIL потому что WaitEvent()
не вернул событий, вышло указанноеп время ожидания. Это не разобрано в примерах, поэтому сбивает с толку - доработаем.
С POLL_ERROR
сложнее: возможно, какая-то системная ошибка, либо неправильно обработанный таймаут (если это так, поправим в коде модуля app_waitevent).
from asterisk-voicekit-modules.
log_aster.txt
вот лог, могу дать и доступн на машину напиши мне в телегу @agick
from asterisk-voicekit-modules.
У вас dialplan так написан так, что единственное условие выхода помимо ошибок - именно таймаут.
по поводу dialplan я брал, ваш диалплан исключительно из примернов
from asterisk-voicekit-modules.
-- Executing [sw_3_GRPCSTT_UTF8@office:10] Log("PJSIP/7705-0000002e", "NOTICE,[2021-02-05T11:08:42.932871210] Phrase(UTF-8 encoded) = {"alternatives":[{"transcript":"двадцать","confidence":-5.4963388442993164}],"is_final":true,"stability":0.0,"start_time":{"seconds":22.0,"nanos":890000000.0},"end_time":{"seconds":23.0,"nanos":550000000.0}}") in new stack
[Feb 5 14:08:42] NOTICE[24266][C-0000002f]: Ext. sw_3_GRPCSTT_UTF8:10 @ office: [2021-02-05T11:08:42.932871210] Phrase(UTF-8 encoded) = {"alternatives":[{"transcript":"двадцать","confidence":-5.4963388442993164}],"is_final":true,"stability":0.0,"start_time":{"seconds":22.0,"nanos":890000000.0},"end_time":{"seconds":23.0,"nanos":550000000.0}}
заработало с текущим дипланом, но есть одно но
PlayBackgroundInitGRPCTTS();
PlayBackground(say,,{"text":"глаголь кожанный мешок, я буду понимать что ты говоришь "});
GRPCSTTBackground(); // Initialize background recognition
WaitEventInit(); // Initialize event queue
при такой именно схеме все работает, успешно и это получается вполне логично.
неплохо было бы указать это в документации.
from asterisk-voicekit-modules.
у меня получается была кривая инициализация модулей так выходит
from asterisk-voicekit-modules.
при такой именно схеме все работает, успешно и это получается вполне логично.
неплохо было бы указать это в документации.
Да. Я понял, что невнятная обработка ошибок сбивает с толку.
у меня получается была кривая инициализация модулей так выходит
В каком смысле? Вот этого не понял.
from asterisk-voicekit-modules.
смотрите
Answer();
Playback(you-entered);
WaitEventInit(); // Initialize event queue
GRPCSTTBackground(); // Initialize background recognition
PlayBackgroundInitGRPCTTS();
PlayBackground(say,,{"text":"глаголь кожанный мешок, я буду понимать что ты говоришь "});
при таком конфиге не работало.
сделал так:
Answer();
Playback(you-entered);
WaitEventInit(); // Initialize event queue
PlayBackgroundInitGRPCTTS();
PlayBackground(say,,{"text":"глаголь кожанный мешок, я буду понимать что ты говоришь "});
GRPCSTTBackground(); // Initialize background recognition
сделал так заработало.
Но важный момент, смотрите при 1 версии конфига, если я говорить начинаю в трубку сразу как начинается синтез, распознование идет, если после фразы синтеза падает с POLL_ERROR, если делаю код как показал, то все работает успешно и без нареканий.
НУ и не логично я сделал конфиг, сначала включив распознование в ожидании, а уже потом синтез речи.
from asterisk-voicekit-modules.
спасибо за помощь, видите я хотел создать просто tutorial который, говорит берите готовый пример вставляете и работает, и не подумал как работает GRPCSTTBackground в какой момент он начинает "отправлять потоки на ваш сервер" . https://voicekit.tinkoff.ru/docs/stttutorial - впринципе все указанно и поясненно.
То есть моё мнение конфликт GRPCSTTBackground и PlayBackgroundInitGRPCTTS
from asterisk-voicekit-modules.
Хм... Должно и так, и так работать. Похоже на баг(( Я, видимо, в понедельник смогу добраться. Было бы неплохо подебажить.
from asterisk-voicekit-modules.
Хм... Должно и так, и так работать. Похоже на баг(( Я, видимо, в понедельник смогу добраться. Было бы неплохо подебажить.
машина тестовая, проблему я воиспрозивёл кучу раз. Могу предоставить доступ на машину если вам нужно это отловить.
Так, что можете написать сюда или в телеграмм, и можем отдебажить если есть желание отловить эту проблему.
from asterisk-voicekit-modules.
Получаю тот же результат "WAITEVENTSTATUS == FAIL; WAITEVENTFAILREASON == TIMEOUT"
- пробовал asterisk 13 и 16;
- пробовал как с синтезом речи так и без;
- пробовал разный порядок инициализации всего добра;
from asterisk-voicekit-modules.
Получаю тот же результат "WAITEVENTSTATUS == FAIL; WAITEVENTFAILREASON == TIMEOUT"
- пробовал asterisk 13 и 16;
- пробовал как с синтезом речи так и без;
- пробовал разный порядок инициализации всего добра;
Картина проявилась:
поправил grpc_stt.cpp (строки 195, 224, 253)
изменил if (!warned) {
на if (!*warned) {
и стало понятно что дело кодеке
from asterisk-voicekit-modules.
Related Issues (8)
- Управление контекстом и денормализацией
- i am first??? ok when will be support yandex and google? HOT 1
- GRPCSTTBackground VAD HOT 1
- GRPCSTTBackground распознает запись воспроизводимую через PlayBackground HOT 2
- Проблема с компиляцией app_playbackground HOT 3
- После загрузки модулей в Asterisk ошибки HOT 3
- Неправильно считается размер буфера в app_grpcsttbackground HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asterisk-voicekit-modules.