机器人语音问答的需要,调用百度AI的语音识别

这里的思路很简单,就是用百度的API,初始化客户端,然后输入参数进行调用。

代码

  1. import wave
  2. import pyaudio
  3. from aip import AipSpeech,AipNlp
  4. from playsound import playsound
  5. """ 你的 APPID AK SK """
  6. APP_ID = '****'
  7. API_KEY = '****'
  8. SECRET_KEY = '****'
  9. # 读取文件
  10. def get_file_content(filePath):
  11. with open(filePath, 'rb') as fp:
  12. return fp.read()
  13. # 录音功能
  14. def record_content():
  15. CHUNK = 1024
  16. FORMAT = pyaudio.paInt16
  17. CHANNELS = 1
  18. RATE = 16000
  19. RECORD_SECONDS = 3
  20. WAVE_OUTPUT_FILENAME = "audio.wav"
  21. p = pyaudio.PyAudio()
  22. stream = p.open(format=FORMAT, channels=CHANNELS,
  23. rate=RATE, input=True,
  24. frames_per_buffer=CHUNK)
  25. print("* recording")
  26. frames = []
  27. for j in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  28. data = stream.read(CHUNK)
  29. frames.append(data)
  30. print("* done recording")
  31. stream.stop_stream()
  32. stream.close()
  33. p.terminate()
  34. wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
  35. wf.setnchannels(CHANNELS)
  36. wf.setsampwidth(p.get_sample_size(FORMAT))
  37. wf.setframerate(RATE)
  38. wf.writeframes(b''.join(frames))
  39. wf.close()
  40. print("done ------------------------------ ")
  41. return WAVE_OUTPUT_FILENAME
  42. # 生成语音功能客户端
  43. client_audio = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  44. # 语音录制
  45. filePath = record_content()
  46. # 语音识别
  47. result_audio = client_audio.asr(get_file_content(filePath), 'wav', 16000, {
  48. 'dev_pid': 1536,
  49. })
  50. content_audio = result_audio['result'][0]
  51. print(content_audio)
  52. # 自然语音处理客户端
  53. client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
  54. # text = "百度是一家高科技公司"
  55. text = content_audio
  56. """ 调用词法分析 """
  57. xx = client_nlp.lexer(text)
  58. content_answer = xx['items'][0]['item']
  59. # 语音合成
  60. try:
  61. result_answer = client_audio.synthesis(content_answer, 'zh', 1, {
  62. 'vol': 5,
  63. })
  64. except Exception as e:
  65. print(e)
  66. # 语音写入
  67. if not isinstance(result_answer, dict):
  68. with open('audio.mp3', 'wb') as f:
  69. f.write(result_answer)
  70. # 语音播放
  71. playsound('audio.mp3')

录音

首先将对方的语音录下,存为 **.wav 音频文件,其中原始 PCM 的录音参数必须符合 16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)

  1. # 录音功能
  2. def record_content():
  3. CHUNK = 1024
  4. FORMAT = pyaudio.paInt16
  5. CHANNELS = 1
  6. RATE = 16000
  7. RECORD_SECONDS = 3
  8. WAVE_OUTPUT_FILENAME = "audio.wav"
  9. p = pyaudio.PyAudio()
  10. stream = p.open(format=FORMAT, channels=CHANNELS,
  11. rate=RATE, input=True,
  12. frames_per_buffer=CHUNK)
  13. print("* recording")
  14. frames = []
  15. for j in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  16. data = stream.read(CHUNK)
  17. frames.append(data)
  18. print("* done recording")
  19. stream.stop_stream()
  20. stream.close()
  21. p.terminate()
  22. wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
  23. wf.setnchannels(CHANNELS)
  24. wf.setsampwidth(p.get_sample_size(FORMAT))
  25. wf.setframerate(RATE)
  26. wf.writeframes(b''.join(frames))
  27. wf.close()
  28. print("done ------------------------------ ")
  29. return WAVE_OUTPUT_FILENAME

识别

然后将录音文件进行识别

代码如下

  1. # 语音识别
  2. result_audio = client_audio.asr(get_file_content(filePath), 'wav', 16000, {
  3. 'dev_pid': 1536,
  4. })
  5. content_audio = result_audio['result'][0]
  6. print(content_audio)

处理

  1. # 自然语音处理客户端
  2. client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
  3. # text = "百度是一家高科技公司"
  4. text = content_audio
  5. """ 调用词法分析 """
  6. xx = client_nlp.lexer(text)
  7. content_answer = xx['items'][0]['item']

回答

语音文件识别结束之后,将其写入到本地文件,并进行播放(python几种播放方法)

  1. # 语音合成
  2. try:
  3. result_answer = client_audio.synthesis(content_answer, 'zh', 1, {
  4. 'vol': 5,
  5. })
  6. except Exception as e:
  7. print(e)
  8. # 语音写入
  9. if not isinstance(result_answer, dict):
  10. with open('audio.mp3', 'wb') as f:
  11. f.write(result_answer)
  12. # 语音播放
  13. playsound('audio.mp3')

需要解决的问题(有建议请评论告知,感谢!):

1.不定长语音文件的判定(音频文件时长不固定,根据说话时长来确定)

2.一群人中确定一个说话人接收指令

百度AI的语音识别与语音合成相关推荐

  1. 百度AI长语音识别技术免费开放,调用时长不再受限

    原标题:百度AI长语音识别技术免费开放,调用时长不再受限 前几天看到一条祝福:祝大家早日成为可以在公司群里随心所欲发语音的人 . 显然,微信群聊(特别是家族群.客户群.公司群)里的语音消息,并不是谁想 ...

  2. 百度云实现语音识别及语音合成

    第一步,点击人工智能,语音合成,然后立即使用: 然后再应用列表里面创建应用: 查看技术文档,下面附上我的语音合成及识别的代码: from aip import AipSpeech"" ...

  3. Python轻松搞定免费语音合成,利用百度AI为短视频配音

    1. 创建百度AI账号 1.1 点击进入百度AI, 左上角"开放能力->语音合成->立即使用" 如果是试用,可以直接点击在线语音合成, 不过语音不能下载.要下载还得用下 ...

  4. java版阿里云,百度ai,讯飞语音识别效果简单对比及demo

    因为公司的业务的需要,对三家的语音识别(简短语句识别java版)进行了调用和对比,把自己的测试成果贴出来供需要的人参考使用.并贴出主要代码块 阿里云的一句话识别: package com.alibab ...

  5. 微信小程序实现图林机器人聊天和百度AI语音识别的简单人工客服

    用微信小程序实现简单的人工客服 最近在做软件工程的课程设计,选择性的做了微信小程序的简单的人工客服.在这里对该课程设计的原理和实现进行一个讲解,也算做一个总结和笔记,方便自己以后查看.复习和帮助大家的 ...

  6. Arduino接入DFrobot EasyIOT实验(Arduino+APP Inventor+EasyIOT+百度AI API+Python数据可视化)

    概述: 主流的公有云IOT平台对于积极学习物联网技术中小学生来说难度过大,使用不便,得益于DFrobot推出的EasyIO平台T和OBLOQ串口转WiFi模块,让这一切变得简单且可行.本文将介绍一个基 ...

  7. 百度ai文字转语音并下载php源码,一种基于百度AI的网页版在线语音包转文字的方法与流程...

    本发明涉及语音识别技术领域,特别涉及一种基于百度AI的网页版在线语音包转文字的方法. 背景技术: 语音识别技术,也被称为自动语音识别Automatic Speech Recognit1n, (ASR) ...

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

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

  9. delphi文本转换mp3_基于百度AI 的语音合成、转换的 Yii2 sdk.

    saviorlv/yii2-bd-aipspeech 基于百度AI 的语音合成.转换的 Yii2 sdk. 安装 $ composer require saviorlv/yii2-bd-aipspee ...

最新文章

  1. tomcat外网映射工具
  2. win10 动态磁盘 linux,win10系统动态磁盘改为基本磁盘的方法
  3. C primer plus 练习题 第三章
  4. BEA WebLogic平台下J2EE调优攻略--转载
  5. VAT code VAT NO.
  6. 插件properties_Mybatis3系列 - 4. mybatis-config的properties属性详解
  7. Android控件Gallery3D效果 .
  8. Go 存储基础 — 内存结构体怎么写入文件?
  9. Python基础篇【第二篇】:运算符
  10. 视频教程-2020软考网络规划设计师基础知识视频教程-软考
  11. 计算机开机没有d盘,电脑每次开机总是自检D盘的解决办法
  12. VM虚拟机安装黑群晖教程
  13. Dynamic Web Module 4.0 requires Java 1.8 or newer.
  14. Java中的七种设计原则
  15. JS对于字符串的切割截取
  16. 送给入门maven的愤怒青年:archetype-cattalog内容详解
  17. 基本的规范和约束(一)
  18. 【我的开源】拿来即用!代码生成器:mybatis-plus-generator自定义模板生成 DTO、VO、Convertor、增删改查方法
  19. cordova Vue 保存视频/图片到相册 - 实现下载视频/图片到相册
  20. ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)

热门文章

  1. homebrew Error: qt: unknown version :mountain_lion
  2. JavaSE:抽象类和接口
  3. 纯卡西欧计算器5800P坐标正反算
  4. python数字转换成中文大写_python初学者笔记(2):阿拉伯数字转换成中文大写
  5. java c2 compiler_C2中的CompilerThread
  6. 网络安全:常见攻击手段及防御
  7. 洛谷noip 模拟赛 day1 T3
  8. 我国逸管家中小企业融资难现状及分析(含开题报告、实践报告)(20180404105041)
  9. mysql导入pet表
  10. linux debian vi,Debian 安装 vim