Showing posts with label Data Processing. Show all posts
Showing posts with label Data Processing. Show all posts

Tuesday, January 29, 2019

語音格式 Audio Format 批量轉換

    某一天當語音處理的大量檔案格式不符合要求時,如果逐個使用軟體轉換,將會相當費時費力。這裡將再次使用到CLI指令方式,完成批量處理語音檔案。

Solution:
    解決方法將會使用到以下的指令、option,和一個for迴圈,
sox 指令: 專門處理語音轉換,支援大部分的格式,有許多轉換的options,
常用的options 有:
-v 調整語音音量大小
-t 文件格式
-b 語音bits
-c channels數,mono or stereo
-r 語音sample rate
-e encoding 編碼

完整執行指令如下:

Silhouette@Home:~$ for f in YOURAUDIOPATH/*.nist; do
sox -t raw -e signed-integer -b 16 -c 1 -r 8000 "$f" -t wav -e signed-integer -b 16 -c 1 -r 8000 "${f%.nist}.wav" trim 0.023 ;
done

trim 為nist 的header 可去除,主要處理語音為紅色highlight,
完成!!!

Monday, January 28, 2019

轉換文件編碼 gb2312 to utf-8

    某一天由於資料處理文件編碼不符合程式的需求,必須修改的編碼,其實已經有許多軟件已經支援encoding轉換,這邊就使用CLI的Solution轉換文檔編碼,其好處就是能夠批量處理。

Solution:
    會使用到 iconv 指令 ,如果需要使用到批量處理可能就會需要到ls 或者find 指令處理目錄夾底下所有文件,這邊就先介紹iconv 這個指令,

主要會使用以下的options:
-f 為 from ,從原始文件的編碼
-t 為 to , 到想要的文件編碼
-l 為 list encoding set,列出所有支援的編碼
-c 為 忽略未知的characters

完整執行指令如下:

Silhouette@Home:~$ iconv -c -f gb2312 -t utf8 YOURFILENAME.gb2312 >>  OUTPUTFILENAME.utf8

完成!!!

Thursday, January 24, 2019

如何使用unix CLI統計folder底下語音的總時長

    某一天當發現需要統計folder 和subfolder底下二三十萬條語音數據時,確實不是能夠靠人工逐個計算那麽簡單的事。


Solution:
    需要使用到以下5個pipeline 形式的指令

ls = 顧名思義就是 "list" 當下folder內的所有資料
grep = 抓取自定義的文件名稱或副檔名
soxi = Sox 的親兄弟,能夠顯示語音檔案的所有資訊,如:-t filetype, -r sample-rate, -c channel,             -D duration, -b bits per sample等
awk = 非常強大的一個文件處理指令,能夠處理計算、比較、批量處理、文件合併等等,
           可參考:https://awk.readthedocs.io/en/latest/index.html
parallel = 平行處理對應指令,可以由 -j $(nproc) 最大化機器平行處理jobs的數目

利用這些指令在terminal 內輸入以下的pipeline形式,

YOURDATAFOLDER~$ ls | grep ".wav" | parallel -j $(nproc) soxi -D {} | awk '{SUM += $1} END {printf "%d:%d:%d\n", SUM/3600, SUM%3600/60, SUM%60}'


會得到以下結果,完成!!!