Práce se zvukovými soubory vhodnými pro asterisk ====== Jak nahrát hlášky do asterisku ====== Jsou dva způsoby, jak si je pořídit. Buď je nahraji pomocí telefonu, přičemž použiji aplikace record (v extensions.conf), [studio2] ; nahraji hlášku pod zadanou číslicí exten => _X!,1,Wait(1) exten => _X!,n,Record(NAHREJ2/${EXTEN}:alaw) exten => _X!,n,Wait(1) exten => _X!,n,Playback(NAHREJ2/${EXTEN}) exten => _X!,n,Hangup ; pokud to začíná hvězdičkou, tak to přehraji exten => _*.,1,Wait(1) exten => _*.,n,Playback(NAHREJ2/${EXTEN:1}) exten => _*.,n,Hangup nebo je nahraji pomocí své kvalitní zvukové karty a mikrofonu (nejlépe USB sluchátka nebo kvalitní mikrofon na kameře) a převedu do tvaru, kterému rozumí asterisk. Výhoda tohoto řešení je, že mohu záznam např. rozsekat a např. vizuálně vidím, jestli není překřičen. Odstřihnout mohu též zbytečně dlouhá prázdná místa a pod. Použít lze např. audacity, který má verzi pro Linux i Windows. Tam si též nainstaluji balíček sox a mohu pokračovat podle našeho návodu. Pokud si soubor nahrajeme v audacity, může být dobré použít potlačení šumu //Effects → Noise removal// , dále zesílení zvuku na optimální (maximální) úroveň, ale tak aby zvuk nebyl překřičen //Effects → Normalize//. Pokud chci zesílit i za cenu překřičení nějakého okamžiku (clipped), mohu to docílit pomocí //Effect → Amplify//. Pokud nahráváte více různých ale krátkých hlášek, které chcete potom uložit do více souborů (např. číslovky), můžete je nahrát v za sebou a potom rozdělit pomocí //Analyze → Sound Finder// a potom uložit //File → Export Multiple// https://fluent-forever.com/forums/topic/a-quicker-way-to-split-words-in-audacity/#.VaLbg0YpBGo Vyrábíme slin - neboli 16-bitový raw ====== x2raw ====== #!/bin/bash # Script to convert any mplayer supported audio file to RAW suitable for Asterisk IVRs. file_name_without_extension="${1%.*}" echo $file_name_without_extension mplayer -ao pcm "$1" -ao pcm:file="$file_name_without_extension.wav" sox -V "$file_name_without_extension.wav" -r 8000 -c 1 "$file_name_without_extension.raw" rm "$file_name_without_extension.wav" Délka souboru ve vteřinách soxi -D out.wav Pokud mám již wav file, tak stačí soubor wav2raw #!/bin/bash sox -V "$1.wav" -r 8000 -c 1 "$1.raw" #!/bin/bash sox -V "$1.wav" -r 8000 -c 1 -t al "$1.alaw" wav2raw_all #!/bin/bash # využívá wav2raw a provede převod všech souborů v adresáři (prerekvizita: apt-get instlall parallel) find *.wav | parallel wav2raw {.} ====== Playraw ====== #!/bin/bash play -t raw -r 8k -b 16 -c 1 -L -e signed-integer $1 ====== Playalaw ====== #!/bin/bash play -t raw -r 8k -c 1 -e a-law $1 # jde take u-law a gsm ====== Otevření alaw v audacity ====== Pokud máme už vygenerovány hlášky v alaw, můžeme chtít zkontrolovat, zda-li jsou stále srozumitelné. Nebo je možné, že máme nějaké starší hlášky, s kterými chceme dále pracovat v audacity. (např. byly nahrány pomocí record, nebo monitor) V audacity můžeme otevřít soubor alaw pomocí Soubor→import → raw data a zde vybereme Kodování A-Law „bez indianness“ a rychlost vzorkování 8000 Hz. Soubory, s kterými pracuje asterisk, nemají žádnou informaci o tom, jak jsou v nich data uložena. Asterisk to rozlišuje pomocí koncovky, ale jiným programům to musíme exmplicitně zadat. Podobně by se otvíral soubor ve formátu gsm nebo slin. #!/usr/bin/ruby # encoding: utf-8 Dir.glob(".") {|f| puts f} #`sox -t raw -b -A -r 8000 old/$1.alaw -t wav -u -b new/$1.wav\n`; # sox -t raw -e a-law -r 8000 old/$1.alaw -t wav new/$1.wav