Интеграция с телефонией

Вы можете использовать плагины UniMRCP для работы с сервисом SmartSpeech в телефонии.

UniMRCP – это клиент-серверная реализация протокола MRCP.

Примеры плагинов для работы с сервисом SmartSpeech вы найдете на GitHub.

В плагинах реализованы базовые MRCP-методы:

  1. Для распознавания:

    • SET-PARAMS,
    • DEFINE-GRAMMAR,
    • RECOGNIZE,
    • STOP.
  2. Для синтеза:

    • SET-PARAMS,
    • SPEAK,
    • BARGEINOCCURRED,
    • STOP.

Сборка на ubuntu 20.10

Выполните следующие шаги:

  1. Установите необходимые пакеты:

    $ apt install -y build-essential gcc g++ clang cmake tar libprotobuf-dev libprotoc-dev protobuf-compiler \
    libgrpc++-dev libgrpc-dev protobuf-compiler-grpc \
    pkg-config libcurl4-openssl-dev nlohmann-json3-dev libsofia-sip-ua-dev libssl-dev
  2. Скачайте модифицированные зависимости для unimrcp с сайта UniMRCP:

    $ wget -O unimrcp-deps.tar.gz https://www.unimrcp.org/project/component-view/unimrcp-deps-1-6-0-tar-gz/download && tar -xf unimrcp-deps.tar.gz
  3. Соберите зависимости:

    $ cd unimrcp-deps-1.6.0/
    $ ./build-dep-libs.sh -s -a /opt/apr -o /opt/sofia
  4. Клонируйте репозиторий и загрузите сабмодули:

    $ git submodule update --init --recursive
  5. Соберите плагины:

    $ cd smartspeech-unimrcp
    $ mkdir b && cd b
    $ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
    $ make

В результате будут собраны два плагина smartspeech-recognition-demo.so и smartspeech-synthesis-demo.so.

Использование плагинов

Для подключения плагинов в базовой инсталляции uniMRCP:

  1. Скопируйте плагины в директорию plugins.
  2. Сконфигурируйте движки распознавания и синтеза в файле unimrcpserver.xml.

Описание параметров:

Параметр Описание

smartspeech-url

Обязательное

Адрес сервиса SmartSpeech - smartspeech.sber.ru

smartmarket-url

Обязательное

Адрес SmartMarket API - https://salute.online.sberbank.ru:9443

smartmarket-client-id

Обязательное

Client ID

Как его получить читайте в статье Аутентификация

smartmarket-secret

Обязательное

Client Secret

Как его получить читайте в статье Аутентификация

smartmarket-scope

Пространство, в котором создан secret.

По умолчанию: SMART_SPEECH

<engine id="SmartSpeechRecognize" name="smartspeech-recognition-demo" enable="true">
    <param name="smartspeech-url" value="..."/>
    <!-- smartmarket API url -->
    <param name="smartmarket-url" value="..."/>
    <param name="smartmarket-client-id" value="..."/>
    <!-- smartmarket secret for generation access tokens -->
    <param name="smartmarket-secret" value="..."/>
</engine>

Теперь плагины можно использовать вместе с сервером. Подробную информацию об этом можно узнать в Server Configuration Manual.

Проверка работы плагинов

Для проверки работы плагинов с помощью unimrcpserver и umc выполните следующие действия:

  1. Скачайте и установите uniMRCP версии 1.6 (для других версий потребуется пересборка плагинов с нужной версией uniMRCP):
    $ wget -O unimrcp.tar.gz https://www.unimrcp.org/project/component-view/unimrcp-1-6-0-tar-gz/download tar -xf unimrcp-deps.tar.gz
    $ cd unimrcp-1.6.0/
    $ ./bootstrap
    $ ./configure --prefix /opt/unimrcp --with-apr=/opt/apr --with-apu=/opt/apr/lib/pkgconfig/apr-util-1.pc --with-sofia-sip=/usr/lib/pkgconfig/sofia-sip-ua.pc
    $ make && make install
  1. Скопируйте плагины в папку /opt/unimrcp/plugin.
  2. Сконфигурируйте unimrcpserver для работы с плагинами в файле /opt/unimrcp/conf/unimrcpserver.xml.

Пример для плагина распознавания речи:

<plugin-factory>
   <engine id="SmartSpeechRecognize" name="smartspeech-recognition-demo" enable="true">
       <param name="smartspeech-url" value="smartspeech.sber.ru"/>
       <param name="smartmarket-url" value="https://salute.online.sberbank.ru:9443"/>
       <param name="smartmarket-client-id" value=""/>
       <param name="smartmarket-secret" value=""/>
 </engine>
</plugin-factory>
  1. Создайте тестовый аудиофайл в формате pcm16 8000hz.
  2. Скопируйте тестовые данные и укажите их в тестовых сценариях:

    $ cp test_sample.pcm /opt/unimrcp/data

    где test_sample.pcm – ваш тестовый аудиофайл.

  3. Добавьте тестовую запись в сценарий распознавания /opt/unimrcp/conf/umc-scenarios/recognizer.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <umcscenario name="recog" class="Recognizer" profile="uni2">
    <resource-discovery enable="0"/>
    <define-grammar enable="1" content-type="application/srgs+xml" content-location="grammar.xml"/>
    <recognize enable="1" audio-source="test_sample.pcm"/>
    
    <termination enable="1">
      <capabilities>
        <codec name="LPCM" rates="8000 16000"/>
      </capabilities>
    </termination>
    </umcscenario>
  4. Запустите unimrcpserver:

    $ cd /opt/unimrcp/bin
    $ ./unimrcpserver
  5. Запустите umc и сценарий:

    $ cd /opt/unimrcp/bin
    $ ./umc
    $ # для распознавания
    $ > run recog
    $ # для синтеза
    $ > run synth

При распознавании результат можно увидеть в выводе umc, а для синтеза будет создан файл в /opt/unimrcp/var/<session_id>.pcm. Имя и путь до файла также можно найти в консольном выводе umc.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней