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

完成!!!

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

完成!!!

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}'


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



Window's Network and Sharing Center 區域網登入權限失敗

    某一次的一個Windows Update更新後導致了登入區域網Network Sharing出現了以下的問題,

                         Image result for logon failure the user has not been granted

不管怎麼修改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
再從Credential Manager -》加入區域網的Credential


輸入local sharing 地址與 訊息

再次從Windows Explorer 登入區域sharing ,完成!!!