切割音频文件
from pydub import AudioSegment
from pydub.silence import split_on_silence
import os
sound = AudioSegment.from_mp3("E:/data/AcsData/zfBX/hw202003301111246_23401.wav")
loudness = sound.dBFS
outputPath = "E:/data/AcsData/zfBX/output/"
chunks = split_on_silence(sound,
# 以沉默500毫秒,切割音频文件
min_silence_len=500,
# 低于45分贝的声音过滤
silence_thresh=-45,
#为截出的每个音频添加多少ms无声
keep_silence=400
)
print('总分段:', len(chunks))
for i, chunk in enumerate(chunks):
if os.path.exists(outputPath+"chunk{0}.wav".format(i)):
os.remove(outputPath+"chunk{0}.wav".format(i))
chunk.export(outputPath+"chunk{0}.wav".format(i), format="wav")
智能识别音频
使用了百度acs识别接口
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的appid'
API_KEY = '你的AK'
SECRET_KEY = '你的SK'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
path = "E:/data/AcsData/zfBX/output" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
s = []
strData=""
for file in files: #遍历文件夹
if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开
f = open(path+"/"+file); #打开文件
fileName = get_file_content(path+"/"+file)
# 识别本地文件
a = client.asr(fileName, 'wav', 16000, {
'dev_pid': 1537,
})
print("识别文件:",f)
s.append(a.get('result')) #打印结果
strData=strData+""+str(a.get('result'))
print(s)
#文件保存
with open(path+'output.txt','w') as f:
f.write(str(strData))
识别结果:(内容太长,只展示部分结果)
[‘喂你好。’],[‘您好,请问什么可以帮您,帮我查一下我这个用电的户号啊?’],[‘然后我叫那个叫李琴。’],[‘然后叫那个叫李。’],[‘李先生,请问的。’],[’ 您这边集中一下,用户联系地址绑定的银行卡,电话号码,这边都是能问一下行的。’],[‘呃,就是需要说哪一些吗?’],[‘姓名。’],[‘绑定的电话号码,银行卡号。’],[‘啊,我这边呢是那个广州市珠海区环卫街十号。’],[‘就算请问是珠海还是海珠区呢啊,海珠区。’],[‘海珠区然后呢?’]…
获取appid等信息地址:https://console.bce.baidu.com/ai/?_=1589890413217&fromai=1#/ai/speech/app/detail~appId=262785