簡體   English   中英

SOX的采樣率誤差

[英]sampling rate error with SOX

我正在使用以下使用SOX的轉換代碼將所有原始文件轉換為16 KHZ,16位,單聲道格式的wav文件。 我用下面的代碼

我用下面的代碼

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

盡管我提到了采樣率-r 16000,但觀察到以下錯誤

bsnayak@ubuntu:~/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
bsnayak@ubuntu:~/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

歡迎提出建議。

使用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

sox的命令行要求文件選項在它們所應用的文件名之前。 您沒有在$ input之前放置任何參數,因此sox不知道輸入文件的格式是什么。

假設輸入文件是16k,16位帶符號和1個通道,那么在輸入文件之前重新排列文件參數將使您擺脫錯誤。 您還需要通過附加.wav擴展名來指示輸出格式為wav:

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

默認情況下,輸入格式將以輸出格式復制,除非您通過在輸出文件名之前添加參數來顯式覆蓋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM