语音交互

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

通过使用百度AI开放平台提供的语音技术API实现语音识别与语音合成,该方法能够在电脑及树莓派上均能很好的运行,采用python进行该项目的开发


提示:以下是本篇文章正文内容,下面案例可供参考

一、搭建系统相关环境

1.注册成为百度AI平台开发者

首先需要登录并注册成为开发者 如图所示:
在这里插入图片描述
2.注册后选中产品服务中的语音技术,并创建项目,创建项目的目的是为了获取访问接口的APP_ID,和密钥,如图所示:
在这里插入图片描述

创建完成后,查看技术文档及下载python版本的SDK如图所示:
在这里插入图片描述

二、使用步骤

1.语音识别

下载完成后即可调用相关的模块进行语音识别的开发
代码如下(示例):

from aip import AipSpeech
import os
import sys

用APPID及密钥创建语音识别的对象,

APP_ID='填入你申请的ID'
API_KEY='填入你申请的KEY'
SECRET_KEY='填入你申请的密钥'
#buid a AipSpeech
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)

定义读取文件的,及对需要识别的结果发起请求并解析的方法:

#read file

def get_file_content(filepath):
	with open(filepath,'rb') as fp:
		return fp.read()

#recognize local file
def stt(filename):
	try:
		result = client.asr(get_file_content(filename),'wav',16000,{'dev_pid':1537,})      #1537 symbol chinese            
		print result

#parse the return vale,print the result of speech recognition,and write the result to Demo.txt
		if result['err_msg']=='success.':
			word = result['result'][0]
			if word!='':
				if word[len(word)-3:len(word)]==', ':
					print word[0:len(word)-3]
					with open('demo.txt','w') as f:
						f.write(word[0:len(word)-3])
					f.close()
				else:
					print word.encode('utf-8')
					with open('demo.txt','w') as f:
						f.write(word)
					f.close()
			else:
				print('the audio file does not exist or is formatted incorrectly')
		else:
			print('mistake')
	except:
		pass

完成以上设置即可调用相关的方法对需要进行识别的文件进行解析,对于返回的result(结果)可以查看语音识别的技术文档,以方便了解相关的返回参数,另外使用识别时一定需要给出识别时所需用到的语音格式及音频的采样率否则可能出错。

2.语音合成

语音合成的过程比语音识别要简单的多,同样也需要先创建语音合成的对象,创建后即可调用相关的方法进行语音的合成输出
代码如下(示例):

from aip import AipSpeech


APP_ID='填你的ID'
API_KEY='填你的KEY'
SECRET_KEY='填你的密钥'

#新建一个AipSpeech
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)

#将本地文件进行语音合成
def tts(filename,wavefile):
	f = open(filename,'r')
	command = f.read()
	if len(command)!=0:
		word = command
	f.close()
	result = client.synthesis(word,'zh',1,{'vol':5,'per':0,})
	
	#合成正确返回audio.mp3,错误则返回dict
	if not isinstance(result,dict):
		with open(wavefile,'wb') as f:
			f.write(result)
		f.close()
		print 'tts successful'

if __name__ == '__main__':
	tts('scnu.txt','helloworld.mp3')


同样的语音合成需要设置参数也可以在百度开放平台语音技术文档进行查看,可以合成的声音包括中文,英文,中英文,另外也可以设置人声。

总结

最后,尝试将语音合成“你好,世界”的结果送去语音识别,识别与合成的效果都是相当不错的
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值