2015-04-22 4 views
1

Я использую следующий код преобразования, используя SOX для преобразования всех необработанных файлов в файлы wav в 16 KHZ, 16 бит, в моно формате. Я использовал следующий кодошибка частоты дискретизации с SOX

Я использовал следующий код наблюдаются

#!/bin/bash 
OutDir=converted 
for input in "[email protected]" 
    do sox -S $input -r 16000 -c 1 -b 16 -w -s -t raw "$OutDir/$(basename $input)" 
done 

следующие ошибки, хотя я упомянул частоту дискретизации -r 16000

[email protected]:~/MLLR/input$ ls 
an251-fash-b.raw an254-fash-b.raw cen1-fash-b.raw cen4-fash-b.raw cen7-fash-b.raw convert.sh 
an253-fash-b.raw an255-fash-b.raw cen2-fash-b.raw cen5-fash-b.raw converted 
[email protected]:~/MLLR/input$ ./convert.sh /home/bsnayak/MLLR/input/*.raw 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/an251-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/an253-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/an254-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/an255-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/cen1-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/cen2-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/cen4-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/cen5-fash-b.raw': sampling rate was not specified 
sox FAIL formats: bad input format for file `/home/bsnayak/MLLR/input/cen7-fash-b.raw': sampling rate was not specified 

Feel бесплатно для предложений.

решаемые с помощью followinf команды:

#!/bin/bash 

SAVEIF=$IFS 
IFS=$(echo -en "\n\b") 

for file in $(ls *raw) 
do 
    name=${file%%.raw} 

    sox -S -V -r 16k -e signed -c 1 -b 16 $name.raw $name.wav 
done 
IFS=$SAVEIFS 

ответ

2

Командная строка для Сокс требует, чтобы параметры файла перед именем файла, к которому они относятся. Вы не поставили никаких аргументов перед $ input, поэтому sox не знает, какой формат входного файла.

Предполагая, что входной файл 16k, 16-разрядный подписанный и 1 канал, а затем переформатирование аргументов файла перед входным файлом приведет к ошибке. Кроме того, необходимо указать выходной формат WAV, присоединяя .wav расширение:

sox -S -r 16000 -c 1 -b 16 -w -s -t raw $input "$OutDir/$(basename $input).wav" 

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

+0

Я сделал это также аналогичным образом. благодаря – ZZ2014

Смежные вопросы