1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lionsoul-freeswitch-asr

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Описание

Модуль TTS и ASR с поддержкой автоматического определения голоса для Freeswitch. Я разработал его для Nature Sound Interactive. С помощью встроенного движка LUA мы можем легко создать такое приложение на базе Freeswitch.

Как использовать?

  1. Скопируйте и объедините каталоги ${PROJECT_ROOT}/src и ${PROJECT_ROOT}/conf с исходным деревом Freeswitch.
  2. Добавьте следующие два модуля в файл ${FREESWITCH_SOURCE_ROOT}/modules.conf:
asr_tts/mod_yytts
asr_tts/mod_yyasr
  1. Перекомпилируйте и установите Freeswitch, чтобы установить модули mod_yytts и mod_yyasr.
  2. Активируйте модули mod_yytts и mod_yyasr, добавив следующие строки в файл ${FREESWITCH_INSTALLATION_ROOT}/conf/autoload_configs/modules.conf.xml:
<load module="mod_yytts"/>
<load module="mod_yyasr"/>
  1. Скопируйте скрипты Lua из каталога ${PROJECT_ROOT}/scripts в каталог ${FREESWITCH_INSTALLATION_ROOT}/scripts/.
  2. Привяжите номер для создания приложения, добавив следующие настройки XML в файл ${FREESWITCH_INSTALLATION_ROOT}/conf/dialplan/default.xml:
<!-- yytts tts module testing -->
<extension name="yytts_demo">
  <condition field="destination_number" expression="^5001$">
    <action application="answer"/>
    <action application="sleep" data="2000"/>
    <action application="lua" data="yytts_demo.lua"/>
  </condition>
</extension>

<!-- yyasr asr module testing -->
<extension name="yyasr_demo">
  <condition field="destination_number" expression="^5002$">
    <action application="answer"/>
    <action application="sleep" data="2000"/>
    <action application="lua" data="yyasr_demo.lua"/>
  </condition>
</extension>

Как протестировать?

Запустите Freeswitch и установите клиент Linphone.

  1. Наберите 5001 для тестирования TTS. Подробные инструкции использования см. в файле ./scripts/yytts_demo.lua. Обзор интерфейса модуля:
session:answer();   -- answer the call

-- set to use the yytts TTS with zhilingf speaker
session:set_tts_params("yytts", "zhilingf");

-- fire the speak
session:speak("Hello,我是人工智能电话系统, Bye!");

-- hangup the call
session:hangup();
  1. Наберите 5002 для тестирования ASR. Подробные инструкции использования см. в файле ./scripts/yyasr_demo. Обзор интерфейса ASR:
session:answer();   -- answer the call

-- register the sound input callback
session:setInputCallback(function onInput(s, type, obj) end);

-- start to detect the speech to keep firing the feed interface insite yyasr module
session:execute("detect_speech", "yyasr directory directory");

-- resume the detect_speech
session:execute("detect_speech", "resume");

-- stop the detecting
session:execute("detect_speech", "stop");

-- check ./script/yyasr_demo for details usage.

Дополнительная разработка

Модуль TTS

  1. Структура модуля TTS:
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
tts_interface  = switch_loadable_module_create_interface(*module_interface, SWITCH_SPEECH_INTERFACE);
tts_interface->interface_name = "yytts";
tts_interface->speech_open = yytts_speech_open;
tts_interface->speech_close = yytts_speech_close;
tts_interface->speech_feed_tts = yytts_speech_feed_tts;
tts_interface->speech_read_tts = yytts_speech_read_tts;
tts_interface->speech_flush_tts = yytts_speech_flush_tts;
tts_interface->speech_text_param_tts = yytts_text_param_tts;
tts_interface->speech_numeric_param_tts = yytts_numeric_param_tts;
tts_interface->speech_float_param_tts = yytts_float_param_tts;
  1. Процесс вызова для модуля TTS в Freeswitch:
open
while ( thread running ) do
  feed
  read
  flush
end
close
  1. Внедрение другого модуля TTS путём переопределения функции yytts_speech_feed_tts:
static switch_status_t yytts_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags)
{
    // feed the wave stream to the yytts->audio_buffer buffer
    return SWITCH_STATUS_SUCCESS;
}

Модуль ASR

  1. Структура модуля ASR:
asr_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ASR_INTERFACE);
asr_interface->interface_name = "yyasr";
asr_interface->asr_open = yyasr_asr_open;
asr_interface->asr_load_grammar = yyasr_asr_load_grammar;
asr_interface->asr_unload_grammar =
``` 1.

yyasr_asr_unload_grammar; asr_interface->asr_close = yyasr_asr_close; asr_interface->asr_feed = yyasr_asr_feed; asr_interface->asr_resume = yyasr_asr_resume; asr_interface->asr_pause = yyasr_asr_pause; asr_interface->asr_check_results = yyasr_asr_check_results; asr_interface->asr_get_results = yyasr_asr_get_results; asr_interface->asr_start_input_timers = yyasr_asr_start_input_timers; asr_interface->asr_text_param = yyasr_asr_text_param; asr_interface->asr_numeric_param = yyasr_asr_numeric_param; asr_interface->asr_float_param = yyasr_asr_float_param;


2. Запустить процесс модуля ASR в Freeswitch:

открыть пока (поток работает) делать подача проверка результатов получение результатов конец необязательно пауза|возобновление закрыть


3. Встроить другой механизм ASR, переопределив функцию yyasr_asr_feed:
```c
/*! функция подачи аудио в ASR */
static switch_status_t yyasr_asr_feed(
    switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags)
{
    // подать текст в текстовый буфер yyasr->text_buffer
    return SWITCH_STATUS_SUCCESS;
}

/*
 * Реализация обнаружения активной речи.
 * Оптимизируйте VAD, изменив функцию stop_audio_detect.
*/
static switch_bool_t stop_audio_detect(
    switch_asr_handle_t *ah, int16_t *data, unsigned int samples)
{
    вернуть SWITCH_FALSE;
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Модуль TTS и ASR с поддержкой автоматического определения активного голоса для Freeswitch. Я создал его для Nature Sound Interactive, с помощью встроенного движка LUA мы легко можем создать подобное приложение для Freeswtich. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lionsoul-freeswitch-asr.git
git@api.gitlife.ru:oschina-mirror/lionsoul-freeswitch-asr.git
oschina-mirror
lionsoul-freeswitch-asr
lionsoul-freeswitch-asr
master