AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Самостоятельная запись приветствия для asterisk

Newbies/FAQ Forum 24 сообщений 11.12.2010 10:30 - 02.02.2013 23:54
#1 11.12.2010 10:30
Здравствуйте!

Неоднократно сталкивался с проблемой записи приветствия для asterisk. Голосовые файлы которые устанавливаются вместе с asterisk имеют формат *.gsm на винде ничем отрыть не могу, даже если меняю расширение на *.wav. Файлы wav которые записываю обычной звукозаписью в астериске не воспроизводятся. В тоже время прочитав множество форумов везде советуют один и тот же файл хранить одновременно в нескольких форматах, что астериск не занимался перекодировкой этих звуковых файлов на лету - это снижает нагрузку на систему, и повышает производительность. У меня например на приветствии стоит wav файл( как-то переконвертированный с помощью sox) и перед приветствием раздается характерный щелчок , при этом в консоль астериска выдается сообщение что типа не нашел gsm sample. В связи со всем вышесказаным хотел с помощью форумчам, написать инструкцию. Даже придумал тех задание :D .

Исходные данные: Звуковой файл, записанный в операционной среде WindowsXP(или старше), стандартной звукозаписью. Формат wav PCM 22,050кГц 16 бит моно.

Что нужно получить: Несколько звуковых файлов, в форматах ulaw , alaw, g729 , g726 , g723 , g721 , gsm , wav - понятных астериску. Вообще-то нужно всего ulaw , alaw и gsm , но что кому нужно пусть решает каждый сам самостоятельно, пусть выберет по инструкции. Файлы скорее всего должны лежать в одной папке иметь одинаковое имя например test и у всех будет разное расширение( например, test.alaw , test.ulaw , test.gsm и т.д.) в диалплане строка которая будет запускать это приветсвие будет выглятеть следующем образом

Код: Выделить всё

exten => s,n,Background(/home/asterisk/records/test)
обращаю внимания что расширение файла не указываю специально, потому что астериск сам выбирает нужный файл.

P.S.: Нашел программку Arial Audio Converter там есть возможность конвертации в форматы ulaw, alaw, gsm . Но в чем косяк получаются файлы с расширением wav. Которые воспроизводятся стандартным медиа плеером виндоус. Родные файлы астериска вообще в винде не воспроизводятся. Делаю вывод программа Arial Audio Converter делает gsm формат файлов который отличается от gsm формата файлов астериска. Как решить не знаю!!!

P.S.P.S.: Я бы написал инструкцию обобщил все данные, но ничего толкового в интернете не нашел, обрывки, поэтому создал эту тему, поделитесь пожалуйста кто что знает, я объединю все и выложу здесь и в своем блоге .

Added after 13 minutes:

Пока все думают сам решил поделится тем что нашел, вот ссылка http://blog.911.in.ua/2010/08/ffmpeg-asterisk.html. Вот команда которой автор перекомнилирует mp3 файл в wav файл понятный астериску

Код: Выделить всё

ffmpeg -i test.mp3 -acodec pcm_s16le -ar 8000 -ac 1 -y done/test.wav
. Мои замечания - нет выходного формата файла , кроме расширения. Мне непонятен формат получившегося файла, битрейт, частота дискредитации и т.п. - все подробности
#2 11.12.2010 14:59
# sox inputfile.wav -r 8000 -c 1 outputfile.gsm resample -ql
#3 11.12.2010 18:17
Записал обычной звукозаписью файл pozitiv.wav выполнил вашу команду вот вывод

Код: Выделить всё

#sox pozitiv.wav -r 8000 -c 1 pozitiv-s.gsm resample -ql sox soxio: Failed reading `pozitiv.wav': unknown file type `auto' root@pozzitivplus:/home/lext/records# sox soxio: Failed reading `pozitiv.wav': unknown file type `auto' > 
после чего консоль зависла пришлось закрывать putty на крестик.

Added after 2 hours 42 minutes:

Итак пока ждал ответ частично решил проблему самостоятельно. Научился записывать 3 формата: wav, alaw, ulaw. С помощью Sound Forge Pro 10.0. Итак инструкция :
  • File \ New
  • В открывшемся окне 3 параметра. Sample rate: 8000 Hz , Bit-depth: 16 bit , Channels: 1(Mono) . Насколько я понял астериск может читать файлы только с этими параметрами
  • Делаем запись через микрофон
  • File \ Save As...
  • Жмякаем кнопку Custom
  • Параметры для wav формата: Format: PCM(uncompressed), Sample Rate: 8000 Hz, Bit Depth: 16, Channels: Mono
  • Параметры для alaw формата: Format: CCITT A-law, Attributes: 8,000 kHz; 8bit; Mono
  • Параметры для ulaw формата: Format: CCITT U-law, Attributes: 8,000 kHz; 8bit; Mono
Сохранять файлы нужно под разными именами, потому что Sound Forge все равно сохраняет файл с расширением wav.
Расширение я менял уже в проводнике соответственно для wav файла ничего не менял , для 2-х других alaw и ulaw соответсвенно. Файлы назвал одним именем test.wav, test.alaw, test.ulaw. Скопировал их в одну директорию в экстеншионс прописал так

Код: Выделить всё

exten => s,n,Background(/home/asterisk/records/test)
Все работает. Когда копировал скопировал сначала wav файл, попробовал позвонить, потом удалил. Затем тоже самое для alaw файла, и тоже самое для ulaw . Астериск их корректно воспроизвел по отдельности.
Аналогично пробовал сохранить в формате GSM 6.10 - астериск не воспроизводит, в консоле пишет GSM data error
#4 12.12.2010 10:24
да не нужен этот GSM, вообще его выкинуть нужно...
оптимально
Параметры для wav формата: Format: PCM(uncompressed), Sample Rate: 8000 Hz, 16 Bit Depth, Channels: Mono
его и преобразовывать легко. а для 711-го кодека можно даже не преобразовывать. накладные расходы на транскодирование минимальные.
#5 12.12.2010 13:11
Неоднократно сталкивался с проблемой записи приветствия для asterisk. Голосовые файлы которые устанавливаются вместе с asterisk имеют формат *.gsm на винде ничем отрыть не могу, даже если меняю расширение на *.wav. Файлы wav которые записываю обычной звукозаписью в астериске не воспроизводятся.
Asterisk хранит и обрабатывает аудил файлы без заголовков. Только сырые данные в указанной кодировке. Вот и на винде для воспроизведения файлов подручными средствами нужно представить их в понятном формате - ну например RIFF, который помимо данных содержит также и формат этих данных. В таком формате по умолчанию сохраняет винда данные. Для того что-бы * без лишних шумов воспроизводил их нужно просто извлечь эти данные(в большинстве случаев отрезать заголовок фиксированной длинны). А что-бы винда играла астерисковские - заголовок добавить. Встроенного АПИ винды а также встроенных кодеков хватит что-бы это всё сделать(в том числе и перекодировать с одного формата в другой).
#6 12.12.2010 17:15
FeyFre , спасибо за разъяснение. Понял смысл чем * файлы отличаются от виндовских. Но если не трудно прокомментировать - те файлы, которые я получил с помощью Sound Forge они все-таки с заголовками или без? Замечу что щелчки перед приветствием исчезли у меня. И эти файлы виндой всетаки открываются. Также понял что в винде есть какие-то встроенные средства конвертирования, можете ткунь носом куда нажимать? или все это из коммандной строки делается?
adt2k, насколько я понял, можно вообще записывать приветствие в несжатом wav и это будет оптимально для всех кодеков?
#7 13.12.2010 03:26
если нужно только 8 КГц - то да.
во всяком случае у меня так все и есть. (далеко не один сервер)

ЗЫ у самого * есть собственные средства конвертирования, это если нужно снизить нагрузку на транскодирование. не всякие сокс и тому подобное.
#8 13.12.2010 09:12
ответ немного не в тему будет, но наши вообще для тестового меню брали аудиозаписи, который генерит translate.google.com
потом конвертировали из mp3 в нужный формат.
#9 13.12.2010 09:43
:)

ну с MP3 вообще все проще. их то же конвертировать можно в wav с помощью банального mpg123.


ЗЫ у меня все заливают файлы в mp3, потом все конвертится в wav и подставляется в нужное место.
ЗЫ2 есть много людей - противников такого подхода и если честно, часто оправданно. но приходится действовать ПОПсово.
#10 13.12.2010 11:20
к слову сказать GSM кодек давно уже морально устарел, я лично его у себя где только могу сразу удаляю и в настройках запрещаю, качество очень паршивое. соответсвенно в звуковых файлах в gsm тоже нет смысла, уже давно дисковое место не является узким местом серверов - рекомендую все в wav для совместимости да и просто как оптимальный вариант хранить.
#11 28.12.2010 16:01
Пробывал как написано с Sound Forge не помогло - что не так? asterisk 1.8
#12 29.12.2010 04:29
safetylab
а что не так?
телепатические возможности утром притупляются...
#13 08.05.2011 12:09
Преобразовывает все файлы в директории запуска скрипта. Естественно можно подставить вместо wav файлы других форматов, а там где .99 можно задать громкость 1 = исходная а .* где * = значение громкости в процентах от исходной.
Скармливать нужно все то что имеет Rate: 8000 Hz, Bit Depth: 16, Channels: Mono и понимается соксом.

Удачи!

Код: Выделить всё

#!/bin/bash #Convert wav files for i in *.wav; do val=${i%.wav} echo "** Checking volume levels for $i" ampl=`sox "$i" -t wav /dev/null stat -v 2>&1 | grep -v sox:` echo "** Amplifying volume by $ampl to fake a normalize and converting $val.wav to 16 bit 8000" sox -v "$ampl" "$i" -t wav -r 8000 -c1 -s "$val.converted.wav" resample rm -f "$val.wav" echo "** Reducing the volume" sox -v .99 "$val.converted.wav" "$val.wav" rm -f "$val.converted.wav" echo "** $i is complete" done 
Если кто еще придумает/допишет какие удобства для пользования и выложит сюда - будет просто замечательно.
#14 08.05.2011 18:20
как минимум, перед `rm -f "$val.wav"` неплохоб проверить статус из $?, чтоб потом не было мучительно больно за попытку перекодировать, например, 8 килогерцовые моно файлы....
#15 11.05.2011 21:41
я собственные звуковые файлы просто на овтоответчик наговариваю , на самом астере , он потом эти wav файлы чудно проигрывает :)
#17 14.12.2011 10:18
Привет всем, спс за выше описанное очень помогло, но решил описать конвертацию чуть более простой программой работающей под Win:
Качаем программу "GoldWavePortable ver:5.52", открываем ей любой аудио файл который нас интересует, если надо обрезаем и редактируем как нам нужно.
Далее "effect" > "resample", там выбираем rate=8000, ОК
Переходим к сохранению "File" > "Save As", тип файла выбираем "wave", в графе "attributes" ставим "ulaw, mono" или "alaw, mono".
После сохранения меняем расширение на .ulaw или .alaw в зависимости от того что мы поставили в "attributes", переносим на Asterisk, и все должно работать...
#18 14.12.2011 10:54
Ваще для ПРОФ решений на уровне федералов = Sony Sound Forge + нормальный микрофон
#19 14.12.2011 11:38
а я контенщиков заставляю записывать mp3.
они эти файлы скидывают в нужные папки по ftp.
перед проигрыванием файла запускается mpg123 с параметрами. (само собой один раз на каждый новый файл)

так что записать можно в любой программе которая поддерживает сохранение в mp3 и выложить куда нужно.


ещё есть проект, там вообще аплод любых звуковых файлов происходит.
потом (не кашерно но универсально) демон преобразует их в mp3 (для возможности прослушать через web и flash) и mpg123 для Asterisk
#20 20.12.2011 22:05
http://asteriskforum.ru/prompts/
ps: полученные файлы сразу готовы для загрузки в астериск (перекодировка на лету).
#21 02.02.2013 15:44

Привествие в Asterisk

Добрый день.
Подскажите как сделать чтобы при проигрывании приветствия уже шёл звонок сотруднику?
#23 02.02.2013 19:36
Спасибо, буду разбираться
Может кто то кинет пример, а то у меня всё равно сначало идёт приветствие а уже потом идёт звонок сотруднику.
#24 02.02.2013 23:54
shpakser, а вы случайно топиком не ошиблись? впрочем вопрос риторический :flood3: