首先搜索http://ai.baidu.com/进入官网。
下拉找到百度语音:
然后创建一个语音应用:
管理应用之后:
语音合成:
然后新建一个py文件:
from aip import AipSpeech APP_ID = '14454183' API_KEY = 'txNuGCIsenvEB93I70EsWwB4' SECRET_KEY = 'dzdok3DcUeUxE28atFgiOQzxVd91BmQu' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) res = client.synthesis('我如果爱你',options={ "vol":8, "pit":8, "spd":5, "per":4 }) with open("audio.mp3",'wb')as f: f.write(res)
语音识别:
在本地保存一个音频文件,新建一个py文件:
from aip import AipSpeech import os APP_ID = '14454183' API_KEY = 'txNuGCIsenvEB93I70EsWwB4' SECRET_KEY = 'dzdok3DcUeUxE28atFgiOQzxVd91BmQu' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filePath): ''' 因为只能识别pcm格式的音频,所以利用ffmpeg将mp3格式转化成pcm格式 ''' cmd_str = "ffmpeg -y -i {0} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {0}.pcm".format(filePath) os.system(cmd_str) with open("%s.pcm"%(filePath), 'rb') as f: return f.read() res = client.asr(speech=get_file_content("audio.mp3"),options={ "dev_pid":1536, }) print(res)
要记得将ffpeg中的bin目录放在系统的环境变量里,然后重启pycharn。
然后我们写一个demo:功能是实现将我们的音频文件读出来。
from aip import AipSpeech import os APP_ID = '14454183' API_KEY = 'txNuGCIsenvEB93I70EsWwB4' SECRET_KEY = 'dzdok3DcUeUxE28atFgiOQzxVd91BmQu' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filePath): cmd_str = "ffmpeg -y -i {0} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {0}.pcm".format(filePath) os.system(cmd_str) with open("%s.pcm"%(filePath), 'rb') as f: return f.read() def xsh(filename): res = client.asr(speech=get_file_content(filename), options={ "dev_pid": 1536, }) text = res.get('result')[0] res = client.synthesis( text, options={ "vol": 8, "pit": 8, "spd": 5, "per": 4 }) with open("audio2.mp3", 'wb')as f: f.write(res) os.system("audio2.mp3") xsh('audio.mp3')
自然语言:
同样创建一个自然语言的应用:
创建之后:
新建一个py文件:
from aip import AipNlp APP_ID = '14457133' API_KEY = 'yehIP7ofhGqNi7BD1R29LygH' SECRET_KEY = 'ri0WgWeYhSyQszTv4kZDRvNwV34NQ2F7' client = AipNlp(APP_ID, API_KEY, SECRET_KEY) res = client.simnet('你今年多大了?','你的年龄是多少?') # 判断两句话的相似度,如果相似度大于0.72,就认为两句话语义是一样的 print(res)
打印结果:
判断两句话的相似度,如果相似度大于0.72,就认为两句话语义是一样的
我们写一个回答简单问题的demo:
from aip import AipSpeech,AipNlp import os APP_ID = '14454183' API_KEY = 'txNuGCIsenvEB93I70EsWwB4' SECRET_KEY = 'dzdok3DcUeUxE28atFgiOQzxVd91BmQu' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filePath): cmd_str = "ffmpeg -y -i {0} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {0}.pcm".format(filePath) os.system(cmd_str) with open("%s.pcm"%(filePath), 'rb') as f: return f.read() def xsh(filename): res = client.asr(speech=get_file_content(filename), options={ "dev_pid": 1536, }) text = res.get('result')[0] text = my_nlp(text) res = client.synthesis( text, options={ "vol": 8, "pit": 8, "spd": 5, "per": 4 }) with open("audio2.mp3", 'wb')as f: f.write(res) os.system("audio2.mp3") # 系统执行文件 def my_nlp(text): if nlp_client.simnet('你叫什么名字?',text).get('score') >= 0.72: return '我的名字叫金王八' if nlp_client.simnet('你今年几岁了?',text).get('score') >= 0.72: return '我今年999岁了' xsh('audio.mp3')
图灵机器人: