利用百度提供接口,实现智能语音

语音合成  -- TTS(text to speech)

注册

ai.baidu.com 页面中点击 控制台 ,弹出登陆 / 注册页面

创建应用

登陆成功后,点击左侧的语音技术。

跳转页面后。点击创建应用,按照对应的提示填写

想用python 操作,需要下载 baidu-aip

  • 如果已安装pip,执行pip install baidu-aip即可。
  • 如果已安装setuptools,执行python setup.py install即可。

新建AipSpeech

AipSpeech是语音识别的Python SDK客户端,为使用语音识别的开发人员提供了一系列的交互方法。

参考如下代码新建一个AipSpeech:

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

在 应用列表 中点击 需要的应用 。会查看到你需要的参数

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = 'NyIrwuFvSfp8oAgN1cK0GGXE'
SECRET_KEY = 'sDY2EVkirZLBfIcOPfffoWKVUBP2ONZx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呀,我的朋友', 'zh', 1, {
'vol': 5,
}) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)

支持Python版本:2.7.+ ,3.+

合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

错误返回格式

若请求错误,服务器将返回的JSON文本包含以下参数:

  • error_code:错误码。
  • error_msg:错误描述信息,帮助理解和解决发生的错误。

语音识别  -- ASR(Automatic Speech Recognition )

在拥有百度AI账号后,就省去了前面的步骤。直接开始。

下载baidu-aip

如果已安装pip,执行pip install baidu-aip即可。

如果已安装setuptools,执行python setup.py install即可。

新建AipSpeech

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

参数和 语音合成一样

示例

import os

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = 'G9k256n6aeMRnfvS1paws50x'
SECRET_KEY = 'nCbbF44iUp6QrNvSgcYW0eo2EKKl4cvR' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 读取文件
def get_file_content(filePath):
cmd_str = f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm" os.system(cmd_str)
with open(f"{filePath}.pcm", 'rb') as fp:
return fp.read() # 识别本地文件
res = client.asr(get_file_content('wyn.m4a'), 'pcm', 16000, {
'dev_pid': 1536,
})
print(res.get("result")[0])
cmd_str = f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm"
os.system(cmd_str) 这里的两行代码。是用来转换音频格式的。将所有格式的音频文件都转换为 pcm ,其他格式的文件也能进行操作。效果不是最好的
需要 ffmpeg 这个工具。安装成功后。添加到环境变量。重启编辑器

支持Python版本:2.7.+ ,3.+

原始 PCM 的录音参数必须符合 16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。

目前系统支持的语音时长上限为60s,请不要超过这个长度,否则会返回错误。

错误返回格式

若请求错误,服务器将返回的JSON文本包含以下参数:

  • error_code:错误码。
  • error_msg:错误描述信息,帮助理解和解决发生的错误。

文本相似度  NPL--(natural language processing

下载baidu-aip

如果已安装pip,执行pip install baidu-aip即可。

如果已安装setuptools,执行python setup.py install即可。

新建AipSpeech

from aip import AipNlp

""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = 'G9k256n6aeMRnfvS1paws50x'
SECRET_KEY = 'nCbbF44iUp6QrNvSgcYW0eo2EKKl4cvR' NLP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY) res = NLP_client.simnet("你叫什么名字","你的名字是什么") print(res.get("score"))

错误码 错误信息 描述
1 Unknown error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
2 Service temporarily unavailable 服务暂不可用,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
3 Unsupported openapi method 调用的API不存在,请检查请求URL后重新尝试,一般为URL中有非英文字符,如“-”,可手动输入重试
4 Open api request limit reached 集群超限额,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
6 No permission to access data 无权限访问该用户数据,创建应用时未勾选相关接口
13 Get service token failed 获取token失败
14 IAM Certification failed IAM 鉴权失败
15 app not exsits or create failed 应用不存在或者创建失败
17 Open api daily request limit reached 每天请求量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
18 Open api qps request limit reached QPS超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
19 Open api total request limit reached 请求总量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
100 Invalid parameter 无效的access_token参数,请检查后重新尝试
110 Access token invalid or no longer valid access_token无效
111 Access token expired access token过期
282000 internal error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(632426386)或工单联系技术支持团队。
282002 input encoding error 编码错误,请使用GBK编码
282004 invalid parameter(s) 请求中包含非法参数,请检查后重新尝试
282130 no result 当前查询无结果返回,出现此问题的原因一般为:参数配置存在问题,请检查后重新尝试
282131 input text too long 输入长度超限,请查看文档说明
282133 param {参数名} not exist 接口参数缺失
282300 word error word不在算法词典中
282301 word_1 error word_1提交的词汇暂未收录,无法比对相似度
282302 word_2 error word_2提交的词汇暂未收录,无法比对相似度
282303 word_1&word_2 error word_1和word_2暂未收录,无法比对相似度

利用图灵机器人互动

import os
from aip import AipSpeech, AipNlp """ 你的 APPID AK SK """
APP_ID = ''
API_KEY = 'G9k256n6aeMRnfvS1paws50x'
SECRET_KEY = 'nCbbF44iUp6QrNvSgcYW0eo2EKKl4cvR' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
NLP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
import requests def go_tl(Q):
'''
请求机器人
:param Q:识别完成的文本
:return:
'''
data = {
"perception": {
"inputText": {
"text": Q
}
},
"userInfo": {
"apiKey": "2213889293634c759484cac88a91c170",
"userId": ""
}
} res = requests.post("http://openapi.tuling123.com/openapi/api/v2", json=data)
res_dict = res.json()
return res_dict.get("results")[0].get("values").get("text") def get_file_content(filePath):
'''
读取文件
:param filePath:读取的文件
:return:
'''
cmd_str = f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm"
os.system(cmd_str)
with open(f"{filePath}.pcm", 'rb') as fp:
return fp.read() # 识别本地文件
res = client.asr(get_file_content('wyn.m4a'), 'pcm', 16000, {
'dev_pid': 1536,
}) Q = res.get("result")[0]
print(Q)
A = "我不知道你在说什么" sim = NLP_client.simnet(Q, "你的名字是什么").get("score")
print(sim)
if sim >= 0.58:
A = "我的名字叫图灵"
else:
A = go_tl(Q) result = client.synthesis(A, 'zh', 1, {
'vol': 5,
"spd": 4,
"pit": 5,
"per": 4
}) # 识别正确返回语音二进制 错误则返回dict
if not isinstance(result, dict):
with open('Answer.mp3', 'wb') as f:
f.write(result)

图灵机器人使用文档 点击这里

百度AI技术的更多相关文章

  1. 百度AI技术QQ群

    百度语音QQ群 648968704 视频分析QQ群 632473158 DuerOSQQ群 604592023 图像识别QQ群 649285136 文字识别QQ群 631977213 理解与交互技术U ...

  2. 如何快速将百度大脑AI技术内置智能小程序中

    实现效果: 该AI智能小程序目前集成了百度AI开放平台数十个AI服务产品功能,包括人脸识别.文字识别.表格识别.红酒识别.货币识别.地标识别.手势识别.商标识别.果蔬识别.菜品识别等图片识别功能,以及 ...

  3. 综合5项百度大脑AI技术,快速构建智能交通方案

    一.整体方案:思路:整合百度AI功能,通过百度AI解决.优化在公交运行过程中遇到的运营.管理.安全等方面的问题.具体如下: 安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警.  ...

  4. 基于百度AI人脸识别技术的Demo

    编写demo之前首先浏览官方API:http://ai.baidu.com/docs#/Face-API/top 下面是源码: package com.examsafety.test; import ...

  5. 初探机器学习之使用百度AI服务实现图片识别与相似图片

    一.百度云AI服务 最近在调研一些云服务平台的AI(人工智能)服务,了解了一下阿里云.腾讯云和百度云.其中,百度云提供了图像识别及图像搜索,而且还细分地提供了相似图片这项服务,比较符合我的需求,且百度 ...

  6. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  7. python 全栈开发,Day122(人工智能初识,百度AI)

    一.人工智能初识 什么是智能? 我们通常把人成为智慧生物,那么”智慧生物的能力”就是所谓的”智能”我们有什么能力?听,说,看,理解,思考,情感等等 什么是人工智能? 顾名思义就是由人创造的”智慧能力” ...

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

    一.准备 1.百度ai开放平台提供了优质的接口资源https://ai.baidu.com/  (基本免费) 2.在语音识别的接口中, 对中文来说, 讯飞的接口是很好的选择https://www.xf ...

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

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

随机推荐

  1. Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)

    负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)

  2. zookeeper以及集群的搭建

    今天我来写一写zookeeper集群的搭建流程 1.zookeeper的搭建不难,难的是对他的理解以及良好的使用.单机版的zookeeper只需要解压后直接命令 启动即可 解压zookeeper,ta ...

  3. 深入理解JVM - JVM内存模型

    各版本的差异 JDK1.6 在JDK1.6 的时候运行时常量池在方法区中 JDK1.7 在JDK1.7 的时候运行时常量池在堆中 JDK1.8 在JDK1.8 的时候,JVM内存模型直接将方法区移到了 ...

  4. 吴裕雄--天生自然TensorFlow2教程:numpy [ ] 索引

    import tensorflow as tf a = tf.ones([1, 5, 5, 3]) a.shape a[0][0] numpy : 索引 a = tf.random.normal([4 ...

  5. Ubuntu 安装软件时显示:无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用)

    出错状况:在用 sudo apt-get install 安装软件时,结果终端提示: 无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用) 无法锁定管理目录(var/lib/ ...

  6. Java clone方法的使用

    浅克隆 Person p2 = (Person) p1.clone(); clone()方法使用后得到p2,p2和p1指向不同的地址.但是如果p1中的属性是引用类型,那么不再对这个引用类型进行复制,而 ...

  7. ZJNU 1164 - 考试排名——中级

    1.如果一个单元为0,表示没做过这题,不计入成绩 2.如果一个单位为负数,表示做错了这题,不计入成绩 所以只要一个单元为正数(不论是否有括号)都说明做出了这一题,计入成绩 将名字和成绩都当作字符串读入 ...

  8. Matlab高级教程_第一篇:Matlab基础知识提炼_06

    第十一节:图形操作 第十二节:文件的IO操作个格式化输出

  9. mac词典安装

    网上下载词典文件,比如https://www.xiaomac.com/2013121204.html,将朗道词典解压放入这里. $ ls /Library/Dictionaries/ langdao- ...

  10. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:数据集基本使用方法

    import tempfile import tensorflow as tf # 1. 从数组创建数据集. input_data = [1, 2, 3, 5, 8] dataset = tf.dat ...