Giter VIP home page Giter VIP logo

Comments (16)

agicblack avatar agicblack commented on June 18, 2024

./stt_streaming_recognize_interim_results.py с тем же ключом работает успешно.

from asterisk-voicekit-modules.

g-e-okopnik avatar g-e-okopnik commented on June 18, 2024

Вот тут косяк в примере - исправим:
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.

agicblack avatar agicblack commented on June 18, 2024

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.

agicblack avatar agicblack commented on June 18, 2024

поставил 60 секунд и все равно Fail но уже понятно причина. есть способы решения её?

from asterisk-voicekit-modules.

g-e-okopnik avatar g-e-okopnik commented on June 18, 2024

А пришлите новый лог пожалуйста - скорее всего, там уже приходят события с распознанным текстом.
У вас dialplan так написан так, что единственное условие выхода помимо ошибок - именно таймаут.
То есть WAITEVENTSTATUS == FAIL, WAITEVENTFAILREASON == TIMEOUT - корректная ситуация: FAIL потому что WaitEvent() не вернул событий, вышло указанноеп время ожидания. Это не разобрано в примерах, поэтому сбивает с толку - доработаем.
С POLL_ERROR сложнее: возможно, какая-то системная ошибка, либо неправильно обработанный таймаут (если это так, поправим в коде модуля app_waitevent).

from asterisk-voicekit-modules.

agicblack avatar agicblack commented on June 18, 2024

log_aster.txt
вот лог, могу дать и доступн на машину напиши мне в телегу @agick

from asterisk-voicekit-modules.

agicblack avatar agicblack commented on June 18, 2024

У вас dialplan так написан так, что единственное условие выхода помимо ошибок - именно таймаут.

по поводу dialplan я брал, ваш диалплан исключительно из примернов

from asterisk-voicekit-modules.

agicblack avatar agicblack commented on June 18, 2024
-- 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.

agicblack avatar agicblack commented on June 18, 2024

у меня получается была кривая инициализация модулей так выходит

from asterisk-voicekit-modules.

g-e-okopnik avatar g-e-okopnik commented on June 18, 2024

при такой именно схеме все работает, успешно и это получается вполне логично.
неплохо было бы указать это в документации.

Да. Я понял, что невнятная обработка ошибок сбивает с толку.

у меня получается была кривая инициализация модулей так выходит

В каком смысле? Вот этого не понял.

from asterisk-voicekit-modules.

agicblack avatar agicblack commented on June 18, 2024

смотрите

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.

agicblack avatar agicblack commented on June 18, 2024

спасибо за помощь, видите я хотел создать просто tutorial который, говорит берите готовый пример вставляете и работает, и не подумал как работает GRPCSTTBackground в какой момент он начинает "отправлять потоки на ваш сервер" . https://voicekit.tinkoff.ru/docs/stttutorial - впринципе все указанно и поясненно.

То есть моё мнение конфликт GRPCSTTBackground и PlayBackgroundInitGRPCTTS

from asterisk-voicekit-modules.

g-e-okopnik avatar g-e-okopnik commented on June 18, 2024

Хм... Должно и так, и так работать. Похоже на баг(( Я, видимо, в понедельник смогу добраться. Было бы неплохо подебажить.

from asterisk-voicekit-modules.

agicblack avatar agicblack commented on June 18, 2024

Хм... Должно и так, и так работать. Похоже на баг(( Я, видимо, в понедельник смогу добраться. Было бы неплохо подебажить.

машина тестовая, проблему я воиспрозивёл кучу раз. Могу предоставить доступ на машину если вам нужно это отловить.
Так, что можете написать сюда или в телеграмм, и можем отдебажить если есть желание отловить эту проблему.

from asterisk-voicekit-modules.

oobrun avatar oobrun commented on June 18, 2024

Получаю тот же результат "WAITEVENTSTATUS == FAIL; WAITEVENTFAILREASON == TIMEOUT"

  • пробовал asterisk 13 и 16;
  • пробовал как с синтезом речи так и без;
  • пробовал разный порядок инициализации всего добра;

log

from asterisk-voicekit-modules.

oobrun avatar oobrun commented on June 18, 2024

Получаю тот же результат "WAITEVENTSTATUS == FAIL; WAITEVENTFAILREASON == TIMEOUT"

  • пробовал asterisk 13 и 16;
  • пробовал как с синтезом речи так и без;
  • пробовал разный порядок инициализации всего добра;

log

Картина проявилась:
поправил grpc_stt.cpp (строки 195, 224, 253)
изменил if (!warned) { на if (!*warned) {
и стало понятно что дело кодеке

from asterisk-voicekit-modules.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.