[深度学习] 百度api的asr语音识别(包括长音频,识别多个语句)
以下代码包括了ocr , asr短音频,asr长音频(多个语句)。
正常调用asr的话,效果不好,所以用asr长音频(多个语句切分调用),效果可观很多。
import aip
from aip import ocr
from aip import speech
import osimport wave #音频文件处理
import urllib.request, pycurl
#import base64
import json
# get access token by api key & secret key
import time
import re
ocr
# https://console.bce.baidu.com/ai 百度智能云 创建ocr的api
ocr_APP_ID = 'XXXXXXX'
ocr_API_KEY = 'XXXXXXXXXXXXXXXXXXXX'
ocr_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ocr_client = ocr.AipOcr(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()
def image2text(fileName):image = get_file_content(fileName)dic_result = ocr_client.basicGeneral(image)try:res = dic_result['words_result']except:res = []result = ''for m in res:result = result + str(m['words'])return result
asr(短视频)
# https://console.bce.baidu.com/ai 百度智能云 创建asr的api
asr_APP_ID = 'XXXXXXXXXXX'
asr_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXX"
asr_SECRET_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
asr_client = speech.AipSpeech(asr_APP_ID, asr_API_KEY, asr_SECRET_KEY)
# def wav2text(fileName):
# fp = wave.open(fileName, 'rb')
# nf = fp.getnframes()
# # f_len = nf * 2
# wav = fp.readframes(nf) #audio_data
# dic_result = asr_client.asr(wav)
# # try:
# # res = dic_result['words_result']
# # except:
# # res = []
# # result = ''
# # for m in res:
# # result = result + str(m['words'])
# return dic_result
# 5.短时间举例子
# 语音参数 必须符合16k或8K采样率、16bit采样位数、单声道
# 语音格式 PCM、WAV、AMR
def baidu_Speech_To_Text(filePath): # 百度语音识别asr_APP_ID = 'XXXXXXXX' asr_API_KEY = "XXXXXXXXXXXXXXXXXXXXXX" #这两行是登录用的密码asr_SECRET_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXX" asr_client = speech.AipSpeech(asr_APP_ID, asr_API_KEY, asr_SECRET_KEY)# 读取文件with open(filePath, 'rb') as fp:audioPcm = fp.read()json = asr_client.asr(audioPcm, 'wav', 16000, {'lan': 'zh', })print(json)if 'success' in json['err_msg']:context = json['result'][0]print('成功,返回结果为:', context)else:context = '=====识别失败====='print('识别失败!')return context
asr(长视频(其实是多语句))
from pydub import AudioSegment
from pydub.utils import mediainfo
from aip import speech
def baidu_Speech_To_Text(filePath): # 百度语音识别asr_APP_ID = 'XXXXXXXX' asr_API_KEY = "XXXXXXXXXXXXXXXXXXXXXX" #这两行是登录用的密码asr_SECRET_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXX" asr_client = speech.AipSpeech(asr_APP_ID, asr_API_KEY, asr_SECRET_KEY)# 读取文件with open(filePath, 'rb') as fp:audioPcm = fp.read()json = asr_client.asr(audioPcm, 'wav', 16000, {'lan': 'zh', })print(json)if 'success' in json['err_msg']:context = json['result'][0]print('成功,返回结果为:', context)else:context = '=====识别失败====='print('识别失败!')return context
def sound_cut(file_name):if os.path.exists('识别结果.txt'):os.remove(r'识别结果.txt')song = mediainfo(file_name)song_length = str(int(float(song['duration']))) # 读取文件时长song_size = str(round(float(int(song['size']) / 1024 / 1024), 2)) + 'M' # 读取文件大小保留两位小数round(变量,2)song_filename = song['filename'] # 读取文件地址song_format_name = song['format_name'] # 读取文件格式print('\t长度', song_length, '\t文件大小', song_size, '\t文件路径', song_filename, '\t文件格式', song_format_name)cut_song_num = int(int(song_length) / 59) + 1 # 每段59s,计算切割段数print('切割次数', cut_song_num)sound = AudioSegment.from_mp3(file_name)# 单位:msstat_time = 0end_time = 59for i in range(cut_song_num):if i == cut_song_num - 1: # 判断如果是最后一次截断cut_song = sound[stat_time * 1000:] # 截取到最后的时间end_time = int(song_length)else:cut_song = sound[stat_time * 1000:end_time * 1000]save_name = r"temp-" + str(i + 1) + '.mp3' # 设置文件保存名称cut_song.export(save_name, format="mp3") # 进行切割save_name_pcm = r"temp-" + str(i + 1) + '.wav' # 设置文件保存名称mp3_version = AudioSegment.from_mp3(save_name) # 可以根据文件不太类型导入不同from方法mono = mp3_version.set_frame_rate(16000).set_channels(1) # 设置声道和采样率mono.export(save_name_pcm, format='wav', codec='pcm_s16le') # codec此参数本意是设定16bits pcm编码器, 但发现此参数可以省略context = baidu_Speech_To_Text(save_name_pcm)with open(r'识别结果.txt', 'a', encoding='utf-8') as f:f.write(context)os.remove(save_name) # 删除mp3文件os.remove(save_name_pcm) # 删除mp3文件print(save_name, 'end_time=', stat_time, 'end_time=', end_time)# 切割完加入下一段的参数stat_time += 59end_time += 59
参考: https://blog.csdn.net/qq_40584593/article/details/110311540
[深度学习] 百度api的asr语音识别(包括长音频,识别多个语句)相关推荐
- Keras深度学习实战(41)——语音识别
Keras深度学习实战(41)--语音识别 0.前言 1. 模型与数据集分析 1.1 数据集分析 1.2 模型分析 2. 语音识别模型 2.1 数据加载与预处理 2.2 模型构建与训练 小结 系列链接 ...
- keras安装_代码详解:构建一个简单的Keras+深度学习REST API
在本教程中,我们将介绍一个简单的方法来获取Keras模型并将其部署为REST API.本文所介绍的示例将作为你构建自己的深度学习API的模板/起点--你可以扩展代码,根据API端点的可伸缩性和稳定性对 ...
- 深度学习与人类语言处理-语音识别(part1)
深度学习与人类语言处理课程笔记,上节回顾深度学习与人类语言处理-introduction.这节课将会简单介绍语音识别的最新研究方法,请看正文 语音识别该何去何从? 1969年,J.R. PIERCE: ...
- 深度学习实战(六):从零开始实现表情识别
深度学习实战(六):从零开始实现表情识别 1. 项目简介 2. 数据获取 2.1 数据爬取 2.2 数据整理 2.3 数据清洗 2.4 提取嘴唇区域 3. 模型训练 3.1 数据接口准备 3.1.1 ...
- 将深度学习技术应用于基于情境感知的情绪识别
目录 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 延世大学和洛桑联邦理工学院(EPFL)的研究团队最近开发了一种新的技术,可以通过分析图像中的人脸和上下 ...
- 深度学习之循环神经网络(8)长短时记忆网络(LSTM)
深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结 循环神经网络除了训练困难,还有一个更严重的问 ...
- 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了
大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...
- 深度学习 Day 15——利用卷神经网络实现好莱坞明星识别
深度学习 Day 15--利用卷神经网络实现好莱坞明星识别 文章目录 深度学习 Day 15--利用卷神经网络实现好莱坞明星识别 一.前言 二.我的环境 三.前期工作 1.导入依赖项并设置GPU 2. ...
- 深度学习入门系列6项目实战:声纳回声识别
大家好,我技术人Howzit,这是深度学习入门系列第六篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列3: ...
最新文章
- vue 模板_简化版的 vue 页面模板语法
- 系统分析与设计 实验一用例模型
- pythonis啥意思-Python基础:is和==的区别
- HTTPS通信的C++实现
- 奉劝各位的atas几句话,别怪我没提醒
- 人工智能与机器学习有哪些不同
- RUNOOB python练习题2
- mysql录数据总是错误_MySQL数据库出错
- 序列化 与 反序列化 字符串 实例
- 使用Android OpenGL ES 2.0绘图之一:搭建一个OpenGL ES环境
- 参观云栖小镇体会_云栖小镇感受
- python-gui-pyqt5的使用方法-3--自定义信号的初识
- net framework安装有什么影响_踢脚暖比地暖安装简单,升温快,为什么没有普及?这2点影响很大...
- CCF推荐的计算机顶级期刊和论文参考
- 总结下几个有漏洞第三方插件
- control命令详解
- [Js_Testing]3分钟学会Mocha+Chai单元测试
- 序列特征分析 AND linux,4️⃣ 核酸序列特征分析(6):密码子使用模式的分析
- 网址怎样收藏到我计算机桌面,电脑应该如何收藏网址
- [置顶]开源:Taurus.MVC 框架