一.准备

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格式

  1. ffmpeg -y -i audio.wav -acodec pcm_s16le -f s16le -ac -ar audio.pcm
  1. # 1.你说一句话
  2. # 2.根据语音转化为文字
  3. # 3.机器人通过对文字的处理返回应答
  4. # 4.将应答文字转化为语音,实现对话
  5. import os
  6. import requests
  7.  
  8. from aip import AipNlp, AipSpeech
  9.  
  10. """ 你的 APPID AK SK """
  11. APP_ID = '输入 app_id'
  12. API_KEY = '输入api_key'
  13. SECRET_KEY = '输入secret_key'
  14.  
  15. client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
  16. client2 = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  17. client3 = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  18.  
  19. # 1. 说-> 转换为文字
  20. # 读取文件
  21. def get_file_content(filePath):
  22. os.system(f'ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm')
  23. with open(f'{filePath}.pcm', 'rb') as fp:
  24. return fp.read()
  25.  
  26. # 调用图灵机器人交互
  27. def to_url(text, uid):
  28. url = 'http://openapi.tuling123.com/openapi/api/v2'
  29. data = {
  30. "reqType": 0,
  31. "perception": {
  32. "inputText": {
  33. "text": ""
  34. },
  35.  
  36. },
  37. "userInfo": {
  38. "apiKey": "图灵机器人的apikey",
  39. "userId": ""
  40. }
  41. }
  42.  
  43. data['userInfo']['userId'] = uid
  44. data['perception']['inputText']['text'] = text

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

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

  77. # NLP自然语言处理
  78. ret = client.simnet('你爸爸是谁', t)
  79. print(ret)
  80. # {'log_id': 7122976772040456976, 'texts': {'text_2': '你把我是谁', 'text_1': '你爸爸是谁'}, 'score': 0.656308}
  81. # 0.656308
  82.  
  83. score = ret.get('score')
  84. print(score)
  85. # 0.656308
  86.  
  87. if score >= 0.58: # score在0.58以上证明两个文本表达的意思基本一致
  88. to_audio('当然是罗伯特X了')
  89. else:
  90. to_audio(t)
  1. import os
  2.  
  3. from aip import AipSpeech,AipNlp
  4.  
  5. """ 你的 APPID AK SK """
  6. APP_ID = ''
  7. API_KEY = '5a8u0aLf2SxRGRMX3jbZ2VH0adfa'
  8. SECRET_KEY = 'UAaqS13z6DjD9Qbjd065dAh0HjbqPrzVadfad'
  9.  
  10. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  11. client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
  12.  
  13. # res = client_nlp.simnet("你叫什么名字","你的名字是什么")
  14. # print(res)
  15.  
  16. def text2audio(text):
  17. result = client.synthesis(text, 'zh', 1, {
  18. "spd": 4,
  19. 'vol': 5,
  20. "pit": 8,
  21. "per": 4
  22. })
  23. # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
  24. if not isinstance(result, dict):
  25. with open('audio.mp3', 'wb') as f:
  26. f.write(result)
  27.  
  28. return 'audio.mp3'
  29.  
  30. def audio2text(filepath):
  31. res = client.asr(get_file_content(filepath), 'pcm', 16000, {
  32. 'dev_pid': 1536,
  33. })
  34. print(res.get("result")[0])
  35. return res.get("result")[0]
  36.  
  37. def get_file_content(filePath):
  38. os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
  39. with open(f"{filePath}.pcm", 'rb') as fp:
  40. return fp.read()
  41.  
  42. def goto_tl(text,uid):
  43. URL = "http://openapi.tuling123.com/openapi/api/v2"
  44. import requests
  45. data = {
  46. "perception": {
  47. "inputText": {
  48. "text": "你叫什么名字"
  49. }
  50. },
  51. "userInfo": {
  52. "apiKey": "be41cf8596a24aec95b0e86be895cfa9asd",
  53. "userId": ""
  54. }
  55. }
  56.  
  57. data["perception"]["inputText"]["text"] = text
  58. data["userInfo"]["userId"] = uid
  59. res = requests.post(URL, json=data)
  60.  
  61. # print(res.content)
  62. # print(res.text)
  63. print(res.json())
  64. return res.json().get("results")[0].get("values").get("text")
  65.  
  66. text = audio2text("jttqhbc.m4a")
  67. # 自然语言处理 简单实现
  68. score = client_nlp.simnet("你叫什么名字",text).get("score")
  69. print(score)
  70. if score >= 0.58:
  71. filename = text2audio("需要回复的音频文件名")
  72. # os.system(f"ffplay {filename}")
  73. os.system(filename)
  74.  
  75. answer = goto_tl(text,"qiaoxiaoqiang")
  76. filename = text2audio(answer)
  77. 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. Android NDK定位.so文件crash代码位置

    参考:http://blog.csdn.net/xyang81/article/details/42319789 问题:      QRD8926_110202平台的Browser必现报错.(去年的项 ...

  2. ubuntu下安装maven(转载)

    下载maven http://maven.apache.org/download.cgi 解压 tar -xzvf apache-maven-3.0.5-bin.tar.gz 配置环境变量 sudo ...

  3. pygame小记

    pygame.display.set_mode(x, y)设置显示窗口大小pygame.sprite.Sprite方法中有image, rect, speed等参数 其中image 可以通过 pyga ...

  4. iOS知识基础篇 static

    static关键字的作用  一.隐藏 通过static修饰的函数或者变量,在该文件中,所有位于这条语句之后的函数都可以访问,而其他文件中的方法和函数则不行: 二.静态变量 类方法不可以访问实例变量(函 ...

  5. 鲍姆-韦尔奇算法求解HMM参数

    1. HMM模型参数求解概述 HMM模型参数求解根据已知的条件可以分为两种情况. 第一种情况较为简单,就是我们已知DD个长度为TT的观测序列和对应的隐藏状态序列,即{(O1,I1),(O2,I2),. ...

  6. 牛客训练三:处女座和小姐姐(三)(数位dp)

    题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...

  7. s5-2 Cpu调度算法

    调度程序采用什么算法选择一个进程(作业)? 如何评价调度算法的性能? 调度准则 CPU利用率 – 使CPU尽可能的忙碌 吞吐量 – 单位时间内运行完的进程数 周转时间 – 进程从提交到运行结束的全部时 ...

  8. R语言的文件写入

    R语言的文件写入 官方文档介绍如下: write.table(x, file = "", append = FALSE, quote = TRUE, sep = " &q ...

  9. 反射List<M> To DataTable|反射IList To DataTable|反射 DataTable To List<M>

    将DataTable集合反射获取 List<M> /// <summary> /// 根据DataTable集合反射获取 List<M> /// </summ ...

  10. JDBC连接SQL Server数据库

    测试环境 数据库:SQL Server 2008 R2,创建数据库名:TestDemo,表:User,字段如下:   字段 字段 id UName UPass sqljdbc.jar下载地址:依赖的J ...