感谢yjf师兄救命!
执行代码前需要获得:
APP_ID =xxx
API_KEY = xxx
SECRET_KEY = xxx
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)#创建对象 def recognize(file): data = open(file,'rb').read() result = client.asr(data,'wav',16000,{'dev_pid':1537})#调用asr方法 return result['result'][0]#只将识别出来的内容打印出来 file = 'XXX'#文件路径 for root, dirs, files in os.walk(file):#调用walk方法返回一个三元组 # root 表示当前正在访问的文件夹路径 # dirs 表示该文件夹下的子目录名list # files 表示该文件夹下的文件list files.sort(key=lambda x:int(str(ord(x[3]))+x[5:11]+x[-7:-4])) #为遍历一堆这种格式的AD_F_040006_001音频文件才写这么复杂,主要是为了让文件顺序遍历才写这么复杂,ord将f,m转为ASCII,然后str转为字符串,按数字大小排序 #files.sort(key=lambda x: int(x[:-4]))#一般就这么长,用来排序,因为文件的顺序会乱掉 #files = files[1147:] #续上因为无识别内容而导致的暂停 # 遍历文件 for f in files: path1 = os.path.join(root, f)#先拼接一下路径,然后再识别 text = recognize(path1)#text接收识别的内容,方便写入txt文件 with open('XXX.txt','a+',encoding = "utf-8") as p: #a+是附加在后一行,注意r w a 的区别,encoding是为了防止乱码 p.write(text+"\n")#\n是用来换行的,识别一条为一行 print(recognize(path1)) print(os.path.join(root, f)) # 遍历所有的文件夹 #for d in dirs: # print(os.path.join(root, d))