一.准备

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 1 -ar 16000 audio.pcm

# 1.你说一句话
# 2.根据语音转化为文字
# 3.机器人通过对文字的处理返回应答
# 4.将应答文字转化为语音,实现对话
import os
import requestsfrom 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": "1"}}data['userInfo']['userId'] = uiddata['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.656308if score >= 0.58: # score在0.58以上证明两个文本表达的意思基本一致to_audio('当然是罗伯特X了')
else:to_audio(t)

import osfrom aip import AipSpeech,AipNlp""" 你的 APPID AK SK """
APP_ID = '16027154'
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 requestsdata = {"perception": {"inputText": {"text": "你叫什么名字"}},"userInfo": {"apiKey": "be41cf8596a24aec95b0e86be895cfa9asd","userId": "123"}}data["perception"]["inputText"]["text"] = textdata["userInfo"]["userId"] = uidres = 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)

库版

转载于:https://www.cnblogs.com/robertx/p/10719302.html

[初识]使用百度AI接口,图灵机器人实现简单语音对话相关推荐

  1. 用Python3调用百度AI和图灵机器人实现一个智能(bushi)AI聊天机器人

    题目看起来高大上,但其实这只是假象.关键是要理清思路和流程,掌握了这个之后,整个项目基本就简化成了"傻瓜"项目,对编程能力的要求较低. 思路及流程 一定要搞清这个流程,不要被绕晕. ...

  2. python调用百度AI接口识别营业执照

    上一篇文章介绍了应用python中的pytesseract库和OCR识别软件进行文字识别.本文介绍应用百度AI的文字识别功能对营业执照进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu ...

  3. 调用百度AI接口实现图片文字识别

    一.准备阶段 进入百度AI网址点击这里跳转 ,点击导航栏的开放能力 ---- 文字识别 ---- 通用文字识别,进入文字识别OCR界面. 在文字识别ORC界面点击 技术文档 进入帮助文档. 在左侧可以 ...

  4. 调用百度ai接口实现图片文字识别详解

    调用百度ai接口实现图片文字识别详解 首先先介绍一下这篇博文是干嘛的,为了不浪费大家时间.公司最近和短视频公司合作,需要监控app的截图上的文字是否符合规范,也就是确保其没有违规的文字.到网上找了一些 ...

  5. Python调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序

    调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序 1. 实验环境 Python3.8.Pycharm.window10 2.实验过程 1.首先登陆百度智能云:https ...

  6. Linux下QT软件使用C++语言调用百度AI接口实现人脸库人脸搜索

    参考文档Qt+百度AI实现人脸识别之人脸检测_画茧自缚-CSDN博客 本文档对于以上文档进行精简,参考以上文档实现百度AI人脸库管理-人脸搜索:百度AI接口一通具通,可以以此方法扩展. .h部分 #i ...

  7. 通过QT_TCP和百度AI接口实现的支持语音输入的多人聊天室

    本项目主要通过tcp实现的并发聊天室再加上百度ai的语音识别接口,实现的支持语音识别输入的并发聊天室. 1.服务器 服务器设置的一个没有ui的界面的软件,实现聊天数据的中介 2.客户端 客户端通过qt ...

  8. python 人脸比对,python 使用百度AI接口进行人脸对比的步骤

    1. 注册百度云账号 注册百度智能云,提交申请. 创建应用获取AppID,API Key,Secret Key. 2. 安装baidu python api 人脸对比 API 文档 pip insta ...

  9. php百度大脑,百度大脑和图灵机器人制作一个简单的自动聊天机器人【PHP代码】...

    可以和机器人聊天 文字发送消息 网页进行语音回复 这里主要用到了两个接口 一个是百度大脑  用来实现语音合成 一个是图灵机器人用来实现自动聊天 以下是代码分两个版本 版本一是没有语音合成 版本二是加上 ...

最新文章

  1. android显示温湿度设计与实现,基于Android平台蝴蝶兰大棚温湿度测控系统的设计与实现...
  2. asp.net中的<%%>形式的详细用法总结
  3. 计算机网络向用户提供的最重要的功能
  4. Java IO流之缓冲流
  5. 你写的前端到底用没用到这些
  6. SQL Server 数据库部分常用语句小结
  7. C++面试常见问题整理汇总(面试者必看哦!)
  8. DTLS协议中的509证书和密钥如何传输
  9. ImportError: DLL load failed: 找不到指定的模块。
  10. Sampling-Argmax:用重参数技巧优化Soft-Argmax
  11. 建模实训报告总结_模型实训心得体会
  12. 微信视频文件保存在服务器吗,如何发送大的视频文件给朋友和家人
  13. 门户通专访蓝色理想曾沐阳:用户需慢慢沉淀
  14. Linux内存占用过高排查过程
  15. 怎么把ppt转化成图片
  16. 树莓派编译ffmpeg支持x264硬解码播放视频
  17. JFrog Artifactory的数据备份与恢复教程
  18. 弹出窗口全攻略,代码,方法
  19. Vite 4.0 正式发布!
  20. 用友Java面试汇总

热门文章

  1. 帆软 - ²平方号,€欧元符号 显示乱码
  2. IDEA如何导入数据库
  3. 转)Linux学习路线
  4. 二叉树的结构及实现——堆
  5. [转] MATLAB imadjust函数
  6. ​Hi wiki主客观双数据用户增长实践
  7. lk boot bootimg
  8. js设置html打印不分页,JS 使用 window对象的print方法实现分页打印功能
  9. 没有HOOK就没有病毒?详谈HOOK API技术(转)
  10. Python和Go都很火,我要怎么选?