某一天當語音處理的大量檔案格式不符合要求時,如果逐個使用軟體轉換,將會相當費時費力。這裡將再次使用到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,
完成!!!
Tuesday, January 29, 2019
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
完成!!!
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
完成!!!
Labels:
CLI,
Data Processing,
encoding,
Ubuntu,
Unix
Ubuntu Python pip與pip3 錯誤(ImportError: No module named _internal)
某一天,安裝系統python 新插件時,發現pip 與 pip3 的package 混亂導致python3的pip package 和 python2.7的package互相混合,裏頭的插件都無法使用。
Solution:
解決方法必須先把python 和python3 的pip 給uninstall 移除,
Silhouette@Home:~$ sudo apt-get purge python3-pip python-pip python-pip-whl
然後再用curl 下載get-pip.py,
Silhouette@Home:~$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
最後重新安裝pip,
Silhouette@Home:~$ sudo python get-pip.py --force-reinstall
如果需要python3的pip (把他當成pip3),再由apt 安裝,
Silhouette@Home:~$ sudo apt-get install python3-pip
可由pip -V 和 pip3 -V 檢查是否有問題,
pip -V
pip3 -V
完成!!!
Solution:
解決方法必須先把python 和python3 的pip 給uninstall 移除,
Silhouette@Home:~$ sudo apt-get purge python3-pip python-pip python-pip-whl
然後再用curl 下載get-pip.py,
Silhouette@Home:~$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
最後重新安裝pip,
Silhouette@Home:~$ sudo python get-pip.py --force-reinstall
如果需要python3的pip (把他當成pip3),再由apt 安裝,
Silhouette@Home:~$ sudo apt-get install python3-pip
可由pip -V 和 pip3 -V 檢查是否有問題,
pip3 -V
完成!!!
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}'
會得到以下結果,完成!!!
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}'
會得到以下結果,完成!!!
Labels:
Audio Processing,
CLI,
Data Processing,
Linux,
Unix
Window's Network and Sharing Center 區域網登入權限失敗
某一次的一個Windows Update更新後導致了登入區域網Network Sharing出現了以下的問題,

不管怎麼修改Advanced Sharing Settings -》network discovery 和 file and printer sharing還是開啟services -》UPnP 和一些home group & SSDP的services都無法解決這次的問題。
Solution:
暫時找到的決解方法,是在Control Panal -》 User Account and Family Safety
再由 User Account and Family Safety -》進入Credential Manager
不管怎麼修改Advanced Sharing Settings -》network discovery 和 file and printer sharing還是開啟services -》UPnP 和一些home group & SSDP的services都無法解決這次的問題。
Solution:
暫時找到的決解方法,是在Control Panal -》 User Account and Family Safety
再從Credential Manager -》加入區域網的Credential
輸入local sharing 地址與 訊息
再次從Windows Explorer 登入區域sharing ,完成!!!
Subscribe to:
Posts (Atom)










