Asterisk формат звуковых файлов
As a part of the Media Overhaul project for Asterisk 10, changes have been made to Asterisk to increase the number of codecs it's capable of supporting, to handle codecs with custom formats, and to support audio sampling rates greater than 16kHz. This has resulted in several practical changes to Asterisk that will benefit its users.
Note that the additional codecs discussed here are available for use in Asterisk's SIP channel driver, only. Asterisk 10 does not make them available for IAX2, MGCP, SSCP, H.323, UniSTIM, etc.
Expanded Signed Linear Support
Versions of Asterisk prior to 10 supported 16-bit Signed Linear sampled at 8kHz and at 16kHz (versions 1.6.0 - 1.8). New to Asterisk 10 is support for a much wider range of sampling rates. Asterisk can resample between any of these sampling rates and can read/write raw 16-bit signed linear audio files from/to disk. The complete list of supported sampling rates and file format extensions is:
Asterisk File format
Asterisk 10 removes the format_sln16 file format in favor of expanded support in the main format_sln file format for all sampling rates. So, users who notice the absence of format_sln16 from their Asterisk 10 builds should not panic.
Users can create 16-bit Signed Linear files of varying sampling rates from WAV files using the sox command-line audio utility.
In this example, an input WAV file has been converted to Signed Linear at a depth of 16-bits and at a rate of 32kHz. The resulting output.sln file is then renamed output.sln32 so that it can be processed correctly by Asterisk.
32kHz Speex Support
Asterisk versions prior to 1.8 supported 8kHz Speex. Asterisk 1.8 supports 8 and 16kHz Speex. Asterisk 10 now supports 8, 16, and 32kHz Speex. Use of the 32kHz Speex mode is, like the other modes, controlled in the respective channel driver's configuration file, e.g. chan_sip's sip.conf.
In this example, we have created three SIP peers for 3 different devices. The first, mypeer, supports only the 8kHz sampling of Speex; the second, mypeer2, supports only the 16kHz sampling of Speex; and the third, mypeer3, supports the new 32kHz sampling of Speex.
For comparison, here are some Speex samples, saved as WAV files in .mov containers, for ease-of-playback.
CELT Pass-through Support
Asterisk 10 adds pass-through support for the CELT codec. CELT provides low-delay transmission of high-quality audio. Unlike many other codecs that are focused on the transmission of human speech only, CELT is suitable for the transmission of both speech and audio, e.g. music.
Because the CELT codec is being folded, along with SILK, into a future codec called OPUS, and because the CELT bitstream isn't finalized, we have chosen not to add transcoding support for CELT as this time. CELT is configured in codecs.conf with the following parameters.
Sets the CELT codec as the type of codec being configured
32000, 441000, 48000
Defines the sampling rate in Hz to be used for the defined codec
Represents the duration of each frame in samples. Defaults to 480 and should only be defined if a client does not use the default size. This option allows the codec to split 20ms frames into multiple frames in an anticipatory way. Thus, with 20ms frames at 48kHz are 960 samples, the packet is large. So setting framesize to 480, 20ms frames are transmitted in two 480 sample packets.
CELT codecs.conf example
In this example, three different CELT codecs are created: one for 32kHz mode, one for 44kHz mode, and another for 48kHz mode.
These codecs cannot be dynamically changed while Asterisk is running. In order to make changes, an Asterisk restart is required.
To make sure a codec or format is setup correctly, you can execute:
from the Asterisk CLI
CELT sip.conf example
Corresponding SIP peer entries to use the CELT codec would look like:
In this case, we have defined 3 peers, each with a different CELT sampling rate. Thus, you'd probably want to set at least two of them to the same CELT rate, so they could call each other.
For CELT-calling, there are not a host of options on the client side. One could try Ekiga or SFLphone as softclients to make CELT calls.
SILK Support
Asterisk 10 provides full support for Skype's SILK codec. SILK is an extremely flexible codec for the transmission of speech. It operates in low bitrate narrow-band modes as well as higher (but still very low, otherwise) bitrate super wide-band modes. With respect to CPU complexity, its consumption is roughly three times that of G.729a at comparable bitrates.
SILK is configured in codecs.conf with the following parameters
Sets the SILK codec as the type of codec being configured
8000, 12000, 16000, 24000
Defines the sampling rate in Hz to be used for the defined codec
Sets the use of Forward Error Correction by the codec. Off by default.
Integer as a percent
Defines the estimated packetloss in the uplink direction. This parameter affects the amount of redundancy built into SILK when fec is enabled. The larger the amount, the higher the consumed bandwidth. Default is 0. 10 is recommended when fec is enabled
8kHz: 5000-20000, 12kHz: 7000-25000, 16kHz: 8000-30000, 24kHz: 20000-40000
Defines, in bps and per the sampling rate being used, the maximum bitrate that will be consumed by the codec
Defines whether encoding is done in discontinuous transmission mode. If enabled, bandwidth will be reduced during periods of silence, but additional CPU complexity will be required. Off by default
SILK codecs.conf example
In this example, four different SILK codecs are created: one each for 8 (silk8), 12 (silk12), 16 (silk16), and 24kHz (silk24).
These codecs cannot be dynamically changed while Asterisk is running. In order to make changes, an Asterisk restart is required.
To make sure a codec or format is setup correctly, you can execute:
from the Asterisk CLI
SILK sip.conf example
Corresponding SIP peer entries to use the SILK codec would look like:
In this case, we have defined 4 peers, each with a different SILK codec.
The generally available SIP softphones that support SILK are, to our knowledge, CSIPSimple and nightly builds of Jitsi beginning with build 3648 (so that, and anything newer than that).
Чтобы этого достичь нам понадобится:
- найти триггер обработки завершения вызова с возможностью передачи аргументов
- написать скрипт-конвертор который и будет выполнять нашу задачу
Перейдём к описанию.
К счастью триггер уже есть в интерфейсе администрирования FreePBX. Но он скрыт по-умолчанию, чтобы его найти нужно перейти в «advanced settings» и включить два следующие пунта:
Отображение дополнительных пунктов
После чего поиском по странице ищем пункт «Post Call Recording Script»
Триггер после вызова
Как и гласит название и подсказка, это то что нам нужно: поле для указания скрипта который выполнится при завершении каждого вызова. И помимо прочего он может принимать аргументы. Добавим сюда строчку следующего вида:
После не забываем нажать «submit»+«apply».
И переходим непосредственно к созданию этого скрипта. Открываем консоль сервера (ssh), авторизуемся и выполняем следующие команды:
И уже далее содержимое в зависимости от настроек вашей АТС:
Бессменный заголовок bash-скриптов
Памятка по аргументом, поскольку обработка ведётся не по ассоциативному массиву, а по порядковому.
Указание пути к директории хранения записей.
Внимание! На разных АТС он может быть разным. Например, при кластеризации или выносе папки записей «monitor» в примонтированный раздел и носитель. Так же возможны исключения в которых записи не градируются по директориям по дате вида «/год/месяц/день».
Для того чтобы сразу убедиться в работоспособности и доступе к записям в скрипт внедрена проверка и логирование. Чуть позже вернёмся к этому моменту, а пока рассмотрим главный код:
Как и гласит комментарий: первая команда силами приложения «lame» выполняет конвертацию из wav в mp3.
Внимание! Вторая команда должна быть обязательно соединена с первой двойным «&&» — это означает, что она выполнится только при успешном коде возврата первой. Формально оригинал wav будет удалён только при успешной конвертации и наличии mp3-файла. Если команды записать последовательно оригинал будет удалён вне зависимости от наличия копии в другом формате, что может привести к потере записи в принципе.
Внимание! Эта строка парсер используется только на дистрибутивах FreePBX, в которых есть файл /etc/freepbx.conf следующего вида:
В противном случае нужно указать пароль в переменной вручную.
Как и гласит комментарий, здесь производится замена формата в cdr таблице базы asteriskcdrdb.
Внимание! Если данная модификация проводится с целью обеспечить работу прослушивания записи через обратный звонок в панели, производить симметричную замену нужно ещё и в таблице PT1C_cdr в той же базе asteriskcdrdb. И не забыть переключить приложение воспроизведения записей: advanced settings.
По готовности назначаем права на выполнения и меняем пользователя файла скрипта:
Если картинка совпадает, значит всё сделано верно. Теперь можем проверить работу надстройки. Ставим в консоли папку с записями на мониторинг:
После чего проверяем результат:
Физическое наличие файла Ссылка на файл из CDR Ссылки на файлы из PT1C_cdr
Как уже говорилось мониторить работу скрипта можно в реальном времени через файл лога:
И совершить или дождаться звонок. Результат следующего вида означает что «мгновенная конвертация» выполнена успешно:
Мониторинг через лог
Код скрипта целиком:
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Зачастую, возникает задача, поменять голосовое приветствие, либо же залить какую-нибудь рекламу на свою IP-ATC. Это сделать не трудно, но вся проблема заключается в том, что Asterisk понимает определенный формат звукового файла, с определенной частотой звучания.
Программ, которые занимаются обработкой аудио великое множество, но многие из них платные, многие — тяжелы в использовании. Тут на помощь приходит программа Audacity. Она совершенно бесплатна, доступна в сети Интернет и совершенно незамысловата в работе. К тому же, руссифицирована, что является приятным дополнением для пользователей.
Разберемся по-этапно, как создать голосовой файл для импорта в Asterisk Открываем программу. Она выглядит так:
Далее, как обычно, загружаем в программу звуковой файл. Делается это так: Файл — Открыть. Получается такой вид:
Вроде бы все хорошо, но… Проблема в том, что Asterisk проигрывает формат mono, а у нас на данный момент звуковой файл в формате stereo. С помощью Audacity переводим stereo в mono. Выбираем: Дорожки — Стерео в моно.
Теперь необходимо поменять частоту звучания с 44100 Гц в 8000 Гц. Выбираем: Правка — Параметры:
Выбираем частоту дискретизации по умолчанию — 8000 Гц. Отлично. Теперь дело за малым — экспортировать данный файл. Делается это так: Файл — Экспортировать.
Открывается окошко Windows, указываем имя файла, тип файла — WAV 16 bit PCM, выбираем куда сохранить и жмем « Сохранить». Все! Файл экспортирован и готов к импорту в Вашу IP-ATC Asterisk.
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
О конвертировании имеющегося звукового файла для Asterisk смотрите данную статью.
Использовавшееся ПО: ОС CentOS Linux release 7.6.1810 (Core) (cat /etc/centos-release), Asterisk 13.27.1 (asterisk -V), FreePBX 13.0.192.19 (amportal a ma list | grep framework)
Для добавления оповещения в IVR используем уже имеющиеся системные записи. В веб админке переходим Аdmin(Управление)->System Recordings(Звуковые файлы)
Записи во Freepbx можно добавить также воспользовавшись доступными опциями Record In Browser(запись с помощью браузера) или Record Over Extension(запись с помощью звонка на добавочный номер). Но, если у пользователя на момент записи нет (или не может быть) доступа к веб-админке, необходимо реализовать способ ниже.
Для добавления системной записи необходимо ввести относительный путь в поле Add system recording
Добавление системной записи
Звуковое оповещение IVR Record
После добавления – Submit(Сохранить), соглашаемся с предупреждением о конвертации “ If you are doing media conversions this can take a very long time, is that ok?”, Apply Config(Применить).
Переходим Applications(Приложения)->IVR(Голосовое меню) -> Add new IVR(Добавление нового) и создаем IVR
Для использования в веб-интерфейсе пользовательского кода из extensions_custom.conf переходим в Admin(Управление)->Custom Destinations(Системный диалплан). Добавляем custom destination для записи, отмечаем Return (возврат после выхода), Destination – ранее созданная IVR.
Добавление в веб-интерфейс custom destination для прослушивания
Дозаполняем IVR: указываем Invalid Destination(назначение после неправильного выбора пункта меню), Timeout Destination(назначение после окончания таймаута выбора), добавляем пункты 1 и 2.
IVR for recording
Подключаемся по SSH, в консоли выполняем
Для применения изменений в базе необходимо инициировать из AGI скрипта выполнение команды
Данный код аналогичен нажатию кнопки Apply Config в веб-интерфейсе
Для определения последней сделанной записи cоздаем скрипт last-recording.sh, даем права на выполнение
Назначение при отключенном добавочном
Для применения диалплана, добаленного в extensions_custom.conf:
CLI>
После этого при звонке на 210 произойдет попадание в IVR для записи.
Попадание в IVR для записи при звонке на доб. 210
Добавить/cкорректировать временную группу (Time Groups)
Временная группа для праздничных дней
Правило по времени
Очень часто возникают задачи для администраторов IP-АТС Asterisk, такие как:
- Изменить IVR;
- Создать звуковое приветствие;
- Создать или изменить musiconhold;
- Создать рекламный ролик.
Сделать это очень просто. Ранее мы уже рассматривали как подготовить звуковой файл для Asterisk средствами Linux, но сегодня поговорим как сделать такой же звуковой файл в Windows. Для реализации задачи, будем использоваться программу Audacity. Программа совершенна бесплатна и русифицирована.
1. Запускаем программу
2. Открываем звуковой файл
Файл -> Открыть (или комбинация клавиш Ctrl+O)
3. Переводим из stereo в mono
Дорожки -> Свести -> Свести стерео в моно
4. Меняем частоту дискретизации
Правка -> Параметры -> Качество
Меняем параметр Частота дискретизации по умолчанию: 8000 Hz
5. Экспортируем файл
Файл -> Export
Выбираем тип файла WAV (Microsoft) signed 16-bit PCM
Если Ваша IP-АТС умеет играть файлы .mp3 – выбираем соответствующий тип
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Читайте также: