调用百度ASR接口对本地音频文件遍历识别

感谢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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值