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