百度AI的语音识别与语音合成
机器人语音问答的需要,调用百度AI的语音识别
这里的思路很简单,就是用百度的API,初始化客户端,然后输入参数进行调用。
代码
- import wave
- import pyaudio
- from aip import AipSpeech,AipNlp
- from playsound import playsound
- """ 你的 APPID AK SK """
- APP_ID = '****'
- API_KEY = '****'
- SECRET_KEY = '****'
- # 读取文件
- def get_file_content(filePath):
- with open(filePath, 'rb') as fp:
- return fp.read()
- # 录音功能
- def record_content():
- CHUNK = 1024
- FORMAT = pyaudio.paInt16
- CHANNELS = 1
- RATE = 16000
- RECORD_SECONDS = 3
- WAVE_OUTPUT_FILENAME = "audio.wav"
- p = pyaudio.PyAudio()
- stream = p.open(format=FORMAT, channels=CHANNELS,
- rate=RATE, input=True,
- frames_per_buffer=CHUNK)
- print("* recording")
- frames = []
- for j in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
- data = stream.read(CHUNK)
- frames.append(data)
- print("* done recording")
- stream.stop_stream()
- stream.close()
- p.terminate()
- wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
- wf.setnchannels(CHANNELS)
- wf.setsampwidth(p.get_sample_size(FORMAT))
- wf.setframerate(RATE)
- wf.writeframes(b''.join(frames))
- wf.close()
- print("done ------------------------------ ")
- return WAVE_OUTPUT_FILENAME
- # 生成语音功能客户端
- client_audio = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
- # 语音录制
- filePath = record_content()
- # 语音识别
- result_audio = client_audio.asr(get_file_content(filePath), 'wav', 16000, {
- 'dev_pid': 1536,
- })
- content_audio = result_audio['result'][0]
- print(content_audio)
- # 自然语音处理客户端
- client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
- # text = "百度是一家高科技公司"
- text = content_audio
- """ 调用词法分析 """
- xx = client_nlp.lexer(text)
- content_answer = xx['items'][0]['item']
- # 语音合成
- try:
- result_answer = client_audio.synthesis(content_answer, 'zh', 1, {
- 'vol': 5,
- })
- except Exception as e:
- print(e)
- # 语音写入
- if not isinstance(result_answer, dict):
- with open('audio.mp3', 'wb') as f:
- f.write(result_answer)
- # 语音播放
- playsound('audio.mp3')
录音
首先将对方的语音录下,存为 **.wav 音频文件,其中原始 PCM 的录音参数必须符合 16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)
- # 录音功能
- def record_content():
- CHUNK = 1024
- FORMAT = pyaudio.paInt16
- CHANNELS = 1
- RATE = 16000
- RECORD_SECONDS = 3
- WAVE_OUTPUT_FILENAME = "audio.wav"
- p = pyaudio.PyAudio()
- stream = p.open(format=FORMAT, channels=CHANNELS,
- rate=RATE, input=True,
- frames_per_buffer=CHUNK)
- print("* recording")
- frames = []
- for j in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
- data = stream.read(CHUNK)
- frames.append(data)
- print("* done recording")
- stream.stop_stream()
- stream.close()
- p.terminate()
- wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
- wf.setnchannels(CHANNELS)
- wf.setsampwidth(p.get_sample_size(FORMAT))
- wf.setframerate(RATE)
- wf.writeframes(b''.join(frames))
- wf.close()
- print("done ------------------------------ ")
- return WAVE_OUTPUT_FILENAME
识别
然后将录音文件进行识别
代码如下
- # 语音识别
- result_audio = client_audio.asr(get_file_content(filePath), 'wav', 16000, {
- 'dev_pid': 1536,
- })
- content_audio = result_audio['result'][0]
- print(content_audio)
处理
- # 自然语音处理客户端
- client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
- # text = "百度是一家高科技公司"
- text = content_audio
- """ 调用词法分析 """
- xx = client_nlp.lexer(text)
- content_answer = xx['items'][0]['item']
回答
语音文件识别结束之后,将其写入到本地文件,并进行播放(python几种播放方法)
- # 语音合成
- try:
- result_answer = client_audio.synthesis(content_answer, 'zh', 1, {
- 'vol': 5,
- })
- except Exception as e:
- print(e)
- # 语音写入
- if not isinstance(result_answer, dict):
- with open('audio.mp3', 'wb') as f:
- f.write(result_answer)
- # 语音播放
- playsound('audio.mp3')
需要解决的问题(有建议请评论告知,感谢!):
1.不定长语音文件的判定(音频文件时长不固定,根据说话时长来确定)
2.一群人中确定一个说话人接收指令
百度AI的语音识别与语音合成相关推荐
- 百度AI长语音识别技术免费开放,调用时长不再受限
原标题:百度AI长语音识别技术免费开放,调用时长不再受限 前几天看到一条祝福:祝大家早日成为可以在公司群里随心所欲发语音的人 . 显然,微信群聊(特别是家族群.客户群.公司群)里的语音消息,并不是谁想 ...
- 百度云实现语音识别及语音合成
第一步,点击人工智能,语音合成,然后立即使用: 然后再应用列表里面创建应用: 查看技术文档,下面附上我的语音合成及识别的代码: from aip import AipSpeech"" ...
- Python轻松搞定免费语音合成,利用百度AI为短视频配音
1. 创建百度AI账号 1.1 点击进入百度AI, 左上角"开放能力->语音合成->立即使用" 如果是试用,可以直接点击在线语音合成, 不过语音不能下载.要下载还得用下 ...
- java版阿里云,百度ai,讯飞语音识别效果简单对比及demo
因为公司的业务的需要,对三家的语音识别(简短语句识别java版)进行了调用和对比,把自己的测试成果贴出来供需要的人参考使用.并贴出主要代码块 阿里云的一句话识别: package com.alibab ...
- 微信小程序实现图林机器人聊天和百度AI语音识别的简单人工客服
用微信小程序实现简单的人工客服 最近在做软件工程的课程设计,选择性的做了微信小程序的简单的人工客服.在这里对该课程设计的原理和实现进行一个讲解,也算做一个总结和笔记,方便自己以后查看.复习和帮助大家的 ...
- Arduino接入DFrobot EasyIOT实验(Arduino+APP Inventor+EasyIOT+百度AI API+Python数据可视化)
概述: 主流的公有云IOT平台对于积极学习物联网技术中小学生来说难度过大,使用不便,得益于DFrobot推出的EasyIO平台T和OBLOQ串口转WiFi模块,让这一切变得简单且可行.本文将介绍一个基 ...
- 百度ai文字转语音并下载php源码,一种基于百度AI的网页版在线语音包转文字的方法与流程...
本发明涉及语音识别技术领域,特别涉及一种基于百度AI的网页版在线语音包转文字的方法. 背景技术: 语音识别技术,也被称为自动语音识别Automatic Speech Recognit1n, (ASR) ...
- 通过QT_TCP和百度AI接口实现的支持语音输入的多人聊天室
本项目主要通过tcp实现的并发聊天室再加上百度ai的语音识别接口,实现的支持语音识别输入的并发聊天室. 1.服务器 服务器设置的一个没有ui的界面的软件,实现聊天数据的中介 2.客户端 客户端通过qt ...
- delphi文本转换mp3_基于百度AI 的语音合成、转换的 Yii2 sdk.
saviorlv/yii2-bd-aipspeech 基于百度AI 的语音合成.转换的 Yii2 sdk. 安装 $ composer require saviorlv/yii2-bd-aipspee ...
最新文章
- tomcat外网映射工具
- win10 动态磁盘 linux,win10系统动态磁盘改为基本磁盘的方法
- C primer plus 练习题 第三章
- BEA WebLogic平台下J2EE调优攻略--转载
- VAT code VAT NO.
- 插件properties_Mybatis3系列 - 4. mybatis-config的properties属性详解
- Android控件Gallery3D效果 .
- Go 存储基础 — 内存结构体怎么写入文件?
- Python基础篇【第二篇】:运算符
- 视频教程-2020软考网络规划设计师基础知识视频教程-软考
- 计算机开机没有d盘,电脑每次开机总是自检D盘的解决办法
- VM虚拟机安装黑群晖教程
- Dynamic Web Module 4.0 requires Java 1.8 or newer.
- Java中的七种设计原则
- JS对于字符串的切割截取
- 送给入门maven的愤怒青年:archetype-cattalog内容详解
- 基本的规范和约束(一)
- 【我的开源】拿来即用!代码生成器:mybatis-plus-generator自定义模板生成 DTO、VO、Convertor、增删改查方法
- cordova Vue 保存视频/图片到相册 - 实现下载视频/图片到相册
- ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)
热门文章
- homebrew Error: qt: unknown version :mountain_lion
- JavaSE:抽象类和接口
- 纯卡西欧计算器5800P坐标正反算
- python数字转换成中文大写_python初学者笔记(2):阿拉伯数字转换成中文大写
- java c2 compiler_C2中的CompilerThread
- 网络安全:常见攻击手段及防御
- 洛谷noip 模拟赛 day1 T3
- 我国逸管家中小企业融资难现状及分析(含开题报告、实践报告)(20180404105041)
- mysql导入pet表
- linux debian vi,Debian 安装 vim