本文来自于Thinkai’s Blog,thinkai也是我在ahk上面的引路人,对thinkai感兴趣的朋友请关注他的博客。
thinkai的博客简洁、有趣,即便是转载过来我也尽量保持作者原有的风格,主要是方便大家查阅。
;使用方法 s := silenceDetect("test.wav",30) ;检测test.wav中响度低于-30db的静音区 ;返回数组,单个值包含键值:start开始时间,end结束时间, duration:时长 silenceDetect(file,db := 40){ out_file := A_ScriptDir "tmp" GUID() ".wav" ;注意脚本目录下要有tmp文件夹 ret := cmd("""" A_ScriptDir "toolsffmpeg64.exe"" -i """ file """ -af silencedetect=n=-" db "dB:d=1 -y """ out_file """","UTF-8") s := [] l := StrSplit(ret,"`r","`n") for k,v in l { if RegExMatch(v,"[silencedetect[^]]*]ssilence_start:s([0-9.]*)",m) s.push({"start":floor(m1*1000)}) else if RegExMatch(v,"[silencedetect[^]]*]ssilence_end:s([0-9.]*)s|ssilence_duration:s([0-9.]*)",m) s[s.maxindex()].end := floor(m1*1000), s[s.maxindex()].duration := floor(m2*1000) } FileDelete % out_file return s } GUID(){ shellobj := ComObjCreate("Scriptlet.TypeLib") ret := shellobj.GUID uuid := RegExReplace(ret,"({|}|-)","") return uuid }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。