一.准备

1.百度ai开放平台提供了优质的接口资源https://ai.baidu.com/  (基本免费)

2.在语音识别的接口中, 对中文来说, 讯飞的接口是很好的选择https://www.xfyun.cn/ (收费)

3.图灵机器人提供了可以用http访问的接口, http://www.turingapi.com/

二.创建

1.百度: 在具体功能中创建应用, 点击技术文档-> python sdk 按照文档使用

2.图灵机器人, 如果所示,创建机器人

在设置中可以对机器人的属性设置,包括年龄星座等, 之后可以点击查看api使用文档进行使用

三.使用

  由于百度的语音识别需要的格式为.pcm, 而示例中主要用win系统自带的录音机文件进行声音采集,需要对文件转码.所以需要安装ffmpeg, 安装后将目录/bin配置进系统环境变量

  配置完环境变量之后,编译器(pycharm)要重启一下,重新加载一下环境变量,否则会报错

  如图,环境变量配置成功, cd命令切换到音频文件目录下, 使用下面的命令将文件转换为pcm格式

 ffmpeg -y  -i audio.wav  -acodec pcm_s16le -f s16le -ac  -ar  audio.pcm
# 1.你说一句话
# 2.根据语音转化为文字
# 3.机器人通过对文字的处理返回应答
# 4.将应答文字转化为语音,实现对话
import os
import requests from aip import AipNlp, AipSpeech """ 你的 APPID AK SK """
APP_ID = '输入 app_id'
API_KEY = '输入api_key'
SECRET_KEY = '输入secret_key' client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
client2 = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
client3 = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 1. 说-> 转换为文字
# 读取文件
def get_file_content(filePath):
os.system(f'ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm')
with open(f'{filePath}.pcm', 'rb') as fp:
return fp.read() # 调用图灵机器人交互
def to_url(text, uid):
url = 'http://openapi.tuling123.com/openapi/api/v2'
data = {
"reqType": 0,
"perception": {
"inputText": {
"text": ""
}, },
"userInfo": {
"apiKey": "图灵机器人的apikey",
"userId": ""
}
} data['userInfo']['userId'] = uid
data['perception']['inputText']['text'] = text

# 使用requests模块模拟http请求
res = requests.post(url, json=data).json() return res.get('results')[-1].get('values').get('text') # 将语音转化为文字
def text(file):
# 识别本地文件
ret = client2.asr(get_file_content(file), 'pcm', 16000, {
'dev_pid': 1536,
}) text = ret.get('result')[-1]
return text # 将交互结果转化为语音
def to_audio(text):
result = client3.synthesis(text, 'zh', 1, {
'vol': 5, # 音量
'spd': 5, # 语速
'pit': 8, # 音调
'per': 4, # 发声人选择
}) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
# 在win系统下 os.system可以直接打开这个文件
os.system('auido.mp3')

# ####入口####
t = text('录音.m4a') # 录音文件 放在这里

# NLP自然语言处理
ret = client.simnet('你爸爸是谁', t)
print(ret)
# {'log_id': 7122976772040456976, 'texts': {'text_2': '你把我是谁', 'text_1': '你爸爸是谁'}, 'score': 0.656308}
# 0.656308 score = ret.get('score')
print(score)
# 0.656308 if score >= 0.58: # score在0.58以上证明两个文本表达的意思基本一致
to_audio('当然是罗伯特X了')
else:
to_audio(t)
import os

from aip import AipSpeech,AipNlp

""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = '5a8u0aLf2SxRGRMX3jbZ2VH0adfa'
SECRET_KEY = 'UAaqS13z6DjD9Qbjd065dAh0HjbqPrzVadfad' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY) # res = client_nlp.simnet("你叫什么名字","你的名字是什么")
# print(res) def text2audio(text):
result = client.synthesis(text, 'zh', 1, {
"spd": 4,
'vol': 5,
"pit": 8,
"per": 4
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result) return 'audio.mp3' def audio2text(filepath):
res = client.asr(get_file_content(filepath), 'pcm', 16000, {
'dev_pid': 1536,
})
print(res.get("result")[0])
return res.get("result")[0] def get_file_content(filePath):
os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
with open(f"{filePath}.pcm", 'rb') as fp:
return fp.read() def goto_tl(text,uid):
URL = "http://openapi.tuling123.com/openapi/api/v2"
import requests
data = {
"perception": {
"inputText": {
"text": "你叫什么名字"
}
},
"userInfo": {
"apiKey": "be41cf8596a24aec95b0e86be895cfa9asd",
"userId": ""
}
} data["perception"]["inputText"]["text"] = text
data["userInfo"]["userId"] = uid
res = requests.post(URL, json=data) # print(res.content)
# print(res.text)
print(res.json())
return res.json().get("results")[0].get("values").get("text") text = audio2text("jttqhbc.m4a")
# 自然语言处理 简单实现
score = client_nlp.simnet("你叫什么名字",text).get("score")
print(score)
if score >= 0.58:
filename = text2audio("需要回复的音频文件名")
# os.system(f"ffplay {filename}")
os.system(filename) answer = goto_tl(text,"qiaoxiaoqiang")
filename = text2audio(answer)
os.system(filename)

库版

[初识]使用百度AI接口,图灵机器人实现简单语音对话的更多相关文章

  1. Flask&&人工智能AI -- 6 人工智能初识,百度AI,图灵机器人

    一.人工智能初识,百度AI的创建与应用 参考连接:https://www.cnblogs.com/xiao987334176/p/9620113.html 1. 百度ai开放平台 2. AipSpee ...

  2. 人工智能-调百度AI接口+图灵机器人

    1.登陆百度AI的官网 1.注册:没有账号注册 2.创建应用 3.创建应用 4.查看应用的ID 5.Python代码 from aip import AipSpeech APP_ID = " ...

  3. 百度ai和图灵123实现简单的语音对话

    百度ai和图灵123实现简单的语音对话

  4. 基于flask和百度AI接口实现前后端的语音交互

    话不多说,直接怼代码,有不懂的,可以留言 简单的实现,前后端的语音交互. import os from uuid import uuid4 from aip import AipSpeech from ...

  5. 2019-02-15 python接口图灵机器人(简单好玩)

    import requests import json def Run(text): url = "http://openapi.tuling123.com/openapi/api/v2&q ...

  6. 基于Flask和百度AI实现与机器人对话

    实现对话机器人主要有个步骤 : 一.前端收集语音传入后端 二.后端基于百度AI接口进行语音识别,转换成文字 三.对文字进行自定义验证或通过图灵端口进行处理,生成回复内容 四.将文字通过百度AI接口合成 ...

  7. 使用百度ai接口加图灵机器人完成简单web版语音对话

    app文件 from flask import Flask, request, render_template, jsonify, send_file from uuid import uuid4 i ...

  8. 人工智能-基于百度baidu-ai和图灵机器人实现学说话机器人

    本文引用了2个js文件,这里提供下CDN资源,! <script type="application/javascript" src="https://cdn.bo ...

  9. 百度ai 接口调用

    1.百度智能云 2.右上角 管理控制台 3.左上角产品服务 选择应用 4.创建应用 5.应用详情下面的查看文档 6.选择pythonSDK  查看下面快速入门文档  和  接口说明文档. 7.按步骤写 ...

随机推荐

  1. object SparkStreaming_StateFul {

    窗口查询 ) )).reduceByKeyAndWindow(_+_,_-_,Seconds(10),Seconds(15))     每隔15s进行查询,查询为前10s的结果.这里的值必须为采集时间 ...

  2. viewer.js使用

    viewer GitHub 地址: JS 版本:https://github.com/fengyuanchen/viewerjs jQuery 版本:https://github.com/fengyu ...

  3. clion中资源文件以及头文件的引用

    首先在使用clion中没有将文件target就会出现下面的错误  在使用的时候可以默认一下  在以后的使用中如果不需要某个文件时  就可以在CMakeLis.txt文件把它删除掉 在代码界面的最上面出 ...

  4. TOMCAT内存溢出及大小调整的实现方法

    一.tomcat内存设置问题 收藏 在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemor ...

  5. 2018.11.06 bzoj1835: [ZJOI2010]base 基站选址(线段树优化dp)

    传送门 二分出每个点不需要付www贡献的范围,然后可以推出转移式子: f[i][j]=f[i−1][k]+value(k+1,j)+c[i]f[i][j]=f[i-1][k]+value(k+1,j) ...

  6. 2018.10.26 bzoj2721: [Violet 5]樱花(数论)

    传送门 推一波式子: 1x+1y=1n!\frac 1 x+\frac 1 y=\frac 1 {n!}x1​+y1​=n!1​ =>xy−x∗n!−y∗n!xy-x*n!-y*n!xy−x∗n ...

  7. JMeter测试工具.jmx文件详解

    摘要:了解.jmx文件格式类型,对jmeter二次开发与拓展有很大的帮助,当然也可以利用python对其进行一些处理(生成一些测试用例,对jmx文件进行 ”增删改查“). 一个完整用例的.jmx文件基 ...

  8. Mybatis-Plus 实战完整学习笔记(八)------delete测试

    1.根据ID删除一个员工deleteById /** * 删除客户 * * @throws SQLException */ @Test public void deletedMethod() thro ...

  9. POJ 2433 Landscaping (贪心)

    题意:给定一个序列表示一群山,要你保留最多 K 个山峰,最少要削去多少体积和土.一个山峰是指一段连续的相等的区间,并且左边和右边只能比这个区间低,或者是边界. 析:贪心,每次都寻找体积最小的山峰,然后 ...

  10. Redis-环境搭建

    Redis官方不提供Windows版,不过微软开源组织提供了Windows版本的Redis,此处将安装Windows版的Reids,供学习使用. 1.下载Windows版Redis安装包: 安装包地址 ...