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: Ip-pbx, MikoPBX