最近疫情比較嚴重,大家有沒有發現有一個AI應用有點起死回生的感覺了,當然不是圖片識別的應用場景了,例如口罩識別、無接觸體溫檢測等等已經火爆的一塌糊塗了,如果有對口罩遮擋識別的小夥伴可以看我的另一篇文章【AI實戰】口罩佩戴檢查。而是電話機器人,由於19年出國家出臺了比較嚴的整治電話騷擾的政策,導致外呼、回訪、電話銷售等等行業的需求意願急劇下降,由於疫情反而讓這種可以解決勞動密集型的電話客服的電話機器人悄然有回暖了。
所以今天就跟大家語音標註的內容,目前階段的語音識別在通用場景上的準確率已經很高了,有些特殊場景因爲傳統頭部公司的實際需求也在不斷的落地,所以好多場景的語音相關需求已經從僅僅的識別需求提升到角色識別、情感識別等了。這篇文章介紹一款非常好用的線下語音處理分析軟件--Praat。
Praat語音學軟件,原名Praat:doing phonetics by computer,通常簡稱Praat,是一款跨平臺的多功能語音學專業軟件,主要用於對數字化的語音信號進行分析、標註、處理及合成等實驗,同時生成各種語圖和報表。
首先介紹一下Praat都可以做哪些事情,然後再結合數據標註本身來介紹一下其功能特點。不管是做語音識別的小夥伴還是做標註的小夥伴都可以學習一下,非常好用。
一.Praat可以做哪些事情?
1.頻譜分析
2.基頻分析
3.強度分析
4.共振峯分析
5.語音標註
6.語音參數調整和合成
7.提前語音數據
8.語音數據的統計分析
是不是非常牛?這篇文章主要是要介紹標註語音時的工具使用,所以呢這裏只介紹第五部分語音標註。然後其他的部分後面再單獨寫文章和大家交流。
二.利用Praat做語音標註和切音
1.利用Praat做語音標註工作
爲了方便大家使用,本文中使用的軟件是Praat的漢化版,如果有小夥伴需要的話可以在公衆號留言分享給大家。
注:這裏提示一下,軟件會有很多快捷鍵,可以在使用的時候方便大家進行標註。
2.利用Praat工具進行切音工作
因爲Praat工具非常友好,可以進行編寫腳本程序,在很大程度上擴展其功能,在這裏給大家講解一下利用Praat做切音的工作。
切音腳本:
form dialogue
comment 請輸入源聲音文件和標註文件所在目錄:
text openpath /Users/wangzhenzhen/Desktop/test/todo
comment 請輸入切分後聲音保存目錄:
text savepath /Users/wangzhenzhen/Desktop/test/over
comment 請輸入標記所在層級及標記內容:
positive tier_number 1
sentence mark_string
comment 請輸入數字位數:
positive limit 4
comment 生成一個文件名列表
text saveTXTpath /Users/wangzhenzhen/Desktop/test/out.txt
endform
if right$(openpath$,1) <> "/"
openpath$ = openpath$ + "/"
endif
if right$(savepath$,1) <> "/"
savepath$ = savepath$ + "/"
endif
deleteFile: saveTXTpath$
Create Strings as file list: "fileList", openpath$ + "*.wav"
numofFiles = Get number of strings
for i from 1 to numofFiles
selectObject: "Strings fileList"
fileName$ = Get string: i
order = 1
Read from file: openpath$ + fileName$
nameOfFile$ = selected$("Sound")
textgridNameOfFile$ = nameOfFile$ + ".TextGrid"
Read from file: openpath$ + textgridNameOfFile$
numOfIntervals = Get number of intervals: tier_number
for j from 1 to numOfIntervals
selectObject: "TextGrid " + nameOfFile$
startTime = Get start point: tier_number, j
endTime = Get end point: tier_number, j
labelOfInterval$ = Get label of interval: tier_number, j
if (labelOfInterval$ = mark_string$ and mark_string$ <> "") or (labelOfInterval$ <> "" and mark_string$ = "")
#####將範圍根據標的情況前後分別擴大0.3秒
startTime1 = startTime - 0.3
endTime1 = endTime + 0.3
Extract part: startTime1, endTime1, "no"
selectObject: "Sound " + nameOfFile$
Extract part: startTime1, endTime1, "rectangular", 1, "no"
## 這一段得到一個序號的前面填充0的N位整齊數字
temp = order
ii = 0
repeat
temp = temp div 10
ii = ii + 1
until temp = 0
sumtemp = limit - ii
mark$ = ""
for jjj from 1 to sumtemp
mark$ = mark$ + "0"
endfor
mark$ = mark$ + string$(order)
##
selectObject: "Sound " + nameOfFile$ + "_part"
Save as WAV file: savepath$ + nameOfFile$ + "_" + mark$ + ".wav"
selectObject: "Sound " + nameOfFile$ + "_part"
Remove
selectObject: "TextGrid " + nameOfFile$ + "_part"
Remove
order = order + 1
endif
endfor
selectObject: "TextGrid " + nameOfFile$
Remove
selectObject: "Sound " + nameOfFile$
Remove
endfor
select Strings fileList
Remove
以上就是Praat在數據標註過程中比較重要的兩個應用,後面如果大家感興趣的話,會對Praat的其他功能進行介紹,當然如果有小夥伴需要軟件或者腳本也歡迎大家留言獲取。