C версии MIKOPBX ver: 2021.3.86 разработчики добавили файл произношения say.conf. Данный файл позволяет настроить произношения и склонения. Очень полезный в плане настройки голосовых автоответчиков и информаторов(ну за исключением Yandex.Speech и подобного сервиса). Вот этот файл say.conf и будем использовать в голосовом меню.

В первую очередь следует описать язык. Дело в том, что в файле описан язык ru, а переменная определяющая русский язык -ru-ru. Значит в файл нужно добавить шаблон и язык, определяющий склонения.

Открываем Кастомизацию системных файлов, выбираем файл say.conf и добавляем в конец:

[ru-base](!)
    _[n]um:0X		=> num:${SAY:1}

    _[n]um:X 		=> digits/${SAY}
    _[n]um:[1-2]f	=> digits/${SAY:0:1}f
    _[n]um:[3-9]f	=> digits/${SAY:0:1}

    ; Tens
    _[n]um:1X		=> digits/${SAY:0:2}
    _[n]um:1Xf		=> digits/${SAY:0:2}

    _[n]um:[2-9]0       => digits/${SAY:0:2}
    _[n]um:[2-9]0f      => digits/${SAY:0:2}

    _[n]um:[2-9][1-2]   => digits/${SAY:0:1}0, num:${SAY:1}
    _[n]um:[2-9][1-2]f  => digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[2-9][3-9]   => digits/${SAY:0:1}0, num:${SAY:1}
    _[n]um:[2-9][3-9]f  => digits/${SAY:0:1}0, num:${SAY:1}


    ; Hundreds
    _[n]um:0XX		=>	num:${SAY:1}
    _[n]um:0XXf		=>	num:${SAY:1}

    _[n]um:[1-9]00	=>	digits/${SAY:0:1}00
    _[n]um:[1-9]00f	=>	digits/${SAY:0:1}00

    _[n]um:XXX		=>	num:${SAY:0:1}00, num:${SAY:1}
    _[n]um:XXXf		=>	num:${SAY:0:1}00, num:${SAY:1}


    ; enumeration
    _e[n]um:X			=>	digits/h-${SAY}
    _e[n]um:X[n]		=>	digits/h-${SAY}
    _e[n]um:0X			=>	enum:${SAY:1}
    _e[n]um:0X[n]		=>	enum:${SAY:1}
    _e[n]um:1X			=>	digits/h-${SAY}
    _e[n]um:1X[n]		=>	digits/h-${SAY}
    _e[n]um:[2-9]0		=>	digits/h-${SAY}
    _e[n]um:[2-9]0[n]		=>	digits/h-${SAY}
    _e[n]um:[2-9][1-9]		=>	num:${SAY:0:1}0, digits/h-${SAY:1}
    _e[n]um:[2-9][1-9][n]	=>	num:${SAY:0:1}0, digits/h-${SAY:1}
    _e[n]um:[1-9]00		=>	digits/h-${SAY}
    _e[n]um:[1-9]00[n]		=>	digits/h-${SAY}
    _e[n]um:[1-9]XX		=>	num:${SAY:0:1}00, enum:${SAY:1}
    _e[n]um:[1-9]XX[n]		=>	num:${SAY:0:1}00, enum:${SAY:1}



[ru-ru](ru-base)
    _chas:0		=>	num:${SAY}, digits/hours
    _chas:1		=>	digits/${SAY}, digits/hour
    _chas:[2-4]		=>	num:${SAY}, digits/hours-a
    _chas:[5-9]		=>	num:${SAY}, digits/hours
    _chas:0X		=>	chas:${SAY:1}
    _chas:1X		=>	num:${SAY}, digits/hours
    _chas:20		=>	num:${SAY}, digits/hours
    _chas:2[1-4]	=>	num:${SAY:0:1}0, chas:${SAY:1}

    _mi[n]uta:0		=>	num:${SAY}, digits/minutes
    _mi[n]uta:1		=>	digits/1f, digits/minute
    _mi[n]uta:2		=>	digits/2f, digits/minutes-i
    _mi[n]uta:[3-4]	=>	num:${SAY}, digits/minutes-i
    _mi[n]uta:[5-9]	=>	num:${SAY}, digits/minutes
    _mi[n]uta:0X	=>	minuta:${SAY:1}
    _mi[n]uta:1X	=>	num:${SAY}, digits/minutes
    _mi[n]uta:[2-5]0	=>	num:${SAY}, digits/minutes
    _mi[n]uta:[2-5][1-9]	=>	num:${SAY:0:1}0, minuta:${SAY:1}

    _seku[n]da:0	=>	num:${SAY}, seconds
    _seku[n]da:[5-9]	=>	num:${SAY}, seconds
    _seku[n]da:0X	=>	sekunda:${SAY:1}
    _seku[n]da:1X	=>	num:${SAY}, seconds
    _seku[n]da:[2-5]0	=>	num:${SAY}, seconds

    _dayofweek:[0-6]	=>	digits/day-${SAY} 

    _dayofmo[n]th:X	=>	enum:${SAY}n
    _dayofmo[n]th:XX	=>	enum:${SAY}n

    _mo[n]th:X		=>	digits/mon-$[${SAY} - 1]
    _mo[n]th:XX		=>	digits/mon-$[${SAY} - 1]

Объяснение: [ru-base](!) — обозначает шаблон, на основе которого будет строиться все остальное, [ru-ru](ru-base) — файл русского склонения, который берет за основу шаблон ru-base и добавляет свои параметры.

Но нас поджидает еще одно неудобство. MikoPBX не содержит расширенного файла звуков.

Его нужно скачать отсюда, распаковать и перенести в MikoPBX.

Для переноса можно использовать SFTP. Перед переносом переключить папку offload в режим для чтения командой remount-offload в консоли.

Затем перейти в папку /offload/asterisk/sounds/ru-ru и перекинуть туда файлы записей. Конвертировать в gsm стандарт не обязательно.

Теперь мы сделаем голосовой автоинформатор времени на дополнительном номере.

Переходим в приложения диалпланов, создаем новый, например 000067, Тип кода выбираем Asterisk, переходим в программный код.

Вставляем:

1,Set(FreezeEPOCH=$[${EPOCH} + 15]) ; Добавляем 15 секунд к unixtime.
n,Set(TimeNow=${STRFTIME(${FreezeEPOCH},,%Y%m%d%H%M.%S-%w-%j)})
n,Playback(silence/1&at-tone-time-exactly) ;Тишина 1 секунда + Текущее время
n,Playback(chas:${TimeNow:8:2},say) ; десять + часов
n,Playback(minuta:${TimeNow:10:2},say) ; сорок + одна + минута
n,Playback(sekunda:${TimeNow:13:1}0,say) ; двадцать + секунд
n,Playback(silence/1&digits/today) ; тишина 1 секунда + сегодня
n,Playback(dayofweek:${TimeNow:16:1},say) ; четверг
n,Playback(dayofmonth:${TimeNow:6:2},say) ; шестнадцатое
n,Playback(month:${TimeNow:4:2},say) ; октября
n,Playback(silence/1&beep) ; тишина 1 секунда + короткий гудок
n,Hangup()

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

И теперь можно проверить как все работает.

Подобным образом вы можете описать многие правила для склонения, а того, что не хватает — записать сами.

PS. Если вы все-таки решили перекодировать wav файлы в gsm, то сделать это можно прямо в системе mikopbx.

Перекинуть все файлы в storage и в каждом каталоге выполнить команды:

for i in *; do sox $i -r 8k -c 1 -e gsm $i.gsm; done

Этой командой мы конвертируем все файлы в каталоге в gsm формат.

for i in *; do mv $i $(ls $i|sed -e 's/\.wav.//'); done

А этой командой мы приводим расширения файлов в нормальное состояние.

Далее нам просто нужно перенести файлы с расширением gsm в нужные каталоги, без перезаписи.

Изменения примется сразу.

С Уважением,

Tags: ,