首页 > 其他分享 >AI篇6====>第一讲

AI篇6====>第一讲

时间:2022-11-14 12:32:00浏览次数:39  
标签:10 20 第一 16 AI text 30 com

1.人工智能

小米:小爱

百度:AI云平台

科大讯飞AI平台

 

2.百度语音合成

# Author: studybrother sun
from aip import AipSpeech
#从文本到声音
""" 你的 APPID AK SK """
APP_ID = '你的ID'
API_KEY = '你的ID'
SECRET_KEY = '你的ID'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('曾经有一份真挚的爱情放在我的面前,我没有珍惜', 'zh', 1, {
'vol': 5, #音量
"spd":4, #语速
"pit":7, #语调
"per":4 #度丫丫的声音
})
print(result)
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result)

AI篇6====>第一讲_语音合成

 

 

3.百度语音识别

采样率指的是,每秒监听麦克风的采样频率

# Author: studybrother sun
from aip import AipSpeech
#从声音到文本
""" 你的 APPID AK SK """
APP_ID = '你的ID'
API_KEY = '你的ID'
SECRET_KEY = '你的ID'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

# 识别本地文件
res=client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
'dev_pid': 1536,
})
# buffer指的是流,还有上边的client那一行不区分大小写.

win7的录音机是微软的,win10的是第三方的录音机

下面我们打开"录音机",开始录音,录入"床前明月光,1234567"

 

AI篇6====>第一讲_json_02

上图是录制录音的位置

AI篇6====>第一讲_语音合成_03

录完上边的两段录音,我们发现文件格式不对,这就需要一种文件的转换格式,进行处理

AI篇6====>第一讲_语音合成_04

也就是上图中的ffmpeg工具,进行数据的格式转换.

AI篇6====>第一讲_语音合成_05

上图是解压后的三个方式

 我们只需要将上边的路径,添加到环境变量里边即可

AI篇6====>第一讲_json_06

 

 我们将m4a转换成pcm格式,采样率找不到,看一下怎么处理?

AI篇6====>第一讲_json_07

下面是转换的命令:

AI篇6====>第一讲_语音合成_08

下图是百度的

AI篇6====>第一讲_json_09

以及下面的拼音相似度比较都有

在powershell可以进行切换目录:

AI篇6====>第一讲_语音合成_10

下面我们进行处理:

AI篇6====>第一讲_语音合成_11

上边依然没有执行成功,下面我们将解压后的ffmpeg放到没有中文的目录下,环境变量也修改下

AI篇6====>第一讲_读取文件_12

AI篇6====>第一讲_语音合成_13

AI篇6====>第一讲_语音合成_14

 

 下边是两条命令:

cd C:\Users\Administrator\Documents\录音


ffmpeg -y -i wyn.m4a -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm

 

 

AI篇6====>第一讲_语音合成_15

这个时候,可以成功运行了,上边报错的原因可能就是含有中文的原因:

AI篇6====>第一讲_读取文件_16

上图中,我们可以看到转换成pcm文件了

这个时候,我们将转换成功的文件audio.pcm放入创建好的项目中

AI篇6====>第一讲_读取文件_17

 

 运行之后,报下面错误:

 

AI篇6====>第一讲_语音合成_18

修改下面的打印代码,得到下面的内容:

AI篇6====>第一讲_语音合成_19

 

 

AI篇6====>第一讲_读取文件_20

上边是第一种错误,

AI篇6====>第一讲_读取文件_21

 

上边的3301错误是"我听不清",音频质量太差,因为是我们用文本合成的语音

因此,下图中,我们尽量不要用合成的语音进行处理,下面我们使用的文件是audio.pcm

AI篇6====>第一讲_json_22

 

 

AI篇6====>第一讲_语音合成_23

 

 现在,我们的需求是自动进行转换?

下面,我们将两个音频文件都拷贝到文件内:

AI篇6====>第一讲_读取文件_24

 

 具体处理方式,见下图:

AI篇6====>第一讲_json_25

运行之后,出现上图的错误,错误的原因是,我们配置的环境在pycharm里边还没有生效,我们需要先关上这个pycharm,等一会儿,再次打开,才会生效,

AI篇6====>第一讲_读取文件_26

这个时候打开再次打开,我们看到出来结果了,但是还有飘红,是因为看到的ffmpeg里边运行的信息,当然是没有问题了

 这个时候,成功出现结果了.

 下面是重要的四条内容:

AI篇6====>第一讲_语音合成_27

 

4.百度NLP自然语言处理-simnet短文本相似度

 

AI篇6====>第一讲_语音合成_28

下面写一个常见问题的问答:

最低版本

# Author: studybrother sun
import os

from aip import AipSpeech
#从文本到声音
""" 你的 APPID AK SK """
APP_ID = '16027612'
API_KEY = 'B4Pi3KnxI7Gh2xyrafvygQL6'
SECRET_KEY = 'tcl4ZkM7Mkla3ygzFXanrgRjHOTXoWvt'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

#上边是语音客户端

#定义一个语音合成:
def text2audio(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, # 音量
"spd": 4, # 语速
"pit": 7, # 语调
"per": 4 # 度丫丫的声音
})
print(result)
# 识别正确返回语音二进制 错误则返回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,
})
# buffer指的是流,还有上边的client那一行不区分大小写.
# print(res.get("result")[0]) #注意,出错的位置没有返回,下一行进行处理
return res.get("result")[0] #注意,出错的位置没有返回,这行进行处理!!!!!!
# print(res)

# 读取文件
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()

text=audio2text("wyn.m4a") #首先是语音识别

#自然语言处理 LowB 这是最low版的
if text=="你叫什么名字":
filename=text2audio("我的名字叫做无极剑圣")
os.system(f"ffplay {filename}") #播放方式1
# os.system(filename) #直接,播放方式2

 

 下图中是,需要修改的内容

AI篇6====>第一讲_语音合成_29

这个时候,运行,但是报错,并没有报

 

AI篇6====>第一讲_读取文件_30

上图是我们打印一下语音文件里边的内容

AI篇6====>第一讲_语音合成_31

服务端, 结果显示的内容是见上图

 

 

下面,我们需要处理"自然处理基础技术"

AI篇6====>第一讲_json_32

AI篇6====>第一讲_语音合成_33

知道"短文本相似度"  58%就意味着相等.

AI篇6====>第一讲_读取文件_34

下图指的是,相似度得分

AI篇6====>第一讲_语音合成_35

 

 

AI篇6====>第一讲_读取文件_36

运行的结果,见下图:

AI篇6====>第一讲_读取文件_37

现在我们注释,上图中的第13和14行

AI篇6====>第一讲_读取文件_38

AI篇6====>第一讲_json_39

修改完成之后,再次运行,会播放"我的名字叫做无极剑圣"

具体代码:FAQ2.py 

# Author: studybrother sun
import os
from aip import AipSpeech,AipNlp
#从文本到声音
""" 你的 APPID AK SK """
APP_ID = '16027612'
API_KEY = 'B4Pi3KnxI7Gh2xyrafvygQL6'
SECRET_KEY = 'tcl4ZkM7Mkla3ygzFXanrgRjHOTXoWvt'

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, {
'vol': 5, # 音量
"spd": 4, # 语速
"pit": 7, # 语调
"per": 4 # 度丫丫的声音
})
print(result)
# 识别正确返回语音二进制 错误则返回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,
})
# buffer指的是流,还有上边的client那一行不区分大小写.
print(res.get("result")[0]) #注意,出错的位置没有返回,下一行进行处理
return res.get("result")[0] #注意,出错的位置没有返回,这行进行处理!!!!!!
# print(res)

# 读取文件
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()

text=audio2text("ndmzssm.m4a") #首先是语音识别

#自然语言处理 LowB 这是最low版的
if client_nlp.simnet("你叫什么名字",text).get("score")>=0.58:
filename=text2audio("我的名字叫做无极剑圣")
os.system(f"ffplay {filename}") #播放方式1
# os.system(filename) #直接,播放方式2

AI篇6====>第一讲_语音合成_40

再次升级:

# Author: studybrother sun
import os
from aip import AipSpeech,AipNlp
#从文本到声音
""" 你的 APPID AK SK """
APP_ID = '16027612'
API_KEY = 'B4Pi3KnxI7Gh2xyrafvygQL6'
SECRET_KEY = 'tcl4ZkM7Mkla3ygzFXanrgRjHOTXoWvt'

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, {
'vol': 5, # 音量
"spd": 4, # 语速
"pit": 7, # 语调
"per": 4 # 度丫丫的声音
})
# print(result) #注释这个,显示的更清晰一些
# 识别正确返回语音二进制 错误则返回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,
})
# buffer指的是流,还有上边的client那一行不区分大小写.
print(res.get("result")[0]) #注意,出错的位置没有返回,下一行进行处理
return res.get("result")[0] #注意,出错的位置没有返回,这行进行处理!!!!!!
# print(res)

# 读取文件
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()

text=audio2text("zx.m4a") #首先是语音识别

#自然语言处理 LowB 这是最low版的
score=client_nlp.simnet("你叫什么名字",text).get("score")
print(score)
if score>=0.58:
filename=text2audio("我的名字叫做无极剑圣")
os.system(f"ffplay {filename}") #播放方式1
# os.system(filename) #直接,播放方式2

 

提出问题,提出新的问题怎么办?有没有人回答这个问题

5.图灵机器人

 

AI篇6====>第一讲_语音合成_41

注册登录:

首次登录:

AI篇6====>第一讲_json_42

AI篇6====>第一讲_json_43

 

 

AI篇6====>第一讲_json_44

上边的是api接入接口,秘钥很重要,不要轻易打开.

我们先看一下,下面的任务设置:

AI篇6====>第一讲_json_45

 

 

AI篇6====>第一讲_json_46

我们可以看到聊天记录:

AI篇6====>第一讲_语音合成_47

我们可以下图中的"API使用文档来进行使用"

AI篇6====>第一讲_json_48

 下图中,我们可以看到可以接入的是"文本","图像","位置"

 

AI篇6====>第一讲_json_49

 

 接口地址:

AI篇6====>第一讲_语音合成_50

 

AI篇6====>第一讲_语音合成_51

 

 

URL="http://openapi.tuling123.com/openapi/api/v2"
import requests
res=requests.post("http://openapi.tuling123.com/openapi/api/v2")
print(res.content) #结果是bytes类型的
print(res.text) #结果是文本类型的
print(res.json()) #这个结果是json类型的,这个是字典类型的

 

 

AI篇6====>第一讲_json_52

 

AI篇6====>第一讲_语音合成_53

运行:得到下面的结果

AI篇6====>第一讲_读取文件_54

很明显json是错误的.

tl.py

# Author: studybrother sun
URL="http://openapi.tuling123.com/openapi/api/v2"
import requests
data={
"reqType":0,
"perception": {
"inputText": {
"text": "今天天气不错"#可以修改的位置,向机器人问的问题.
},
"inputImage": {
"url": "imageUrl"
},
"selfInfo": {
"location": {
"city": "北京",
"province": "北京",
"street": "信息路"
}
}
},
"userInfo": {
"apiKey": "e8f694123df84f3f855ccb9ad6527c82",
"userId": "12666"
}
}
res=requests.post("http://openapi.tuling123.com/openapi/api/v2" ,jsnotallow=data)
# print(res.content) #结果是bytes类型的
# print(res.text) #结果是文本类型的
print(res.json()) #这个结果是json类型的,这个是字典类型的
# print(res.json().get("intent").get("code"))

 

下面是一种回答:

AI篇6====>第一讲_读取文件_55

再次运行,又得到另一种回答

AI篇6====>第一讲_语音合成_56

 

 

这个时候,我们再次升级,将1.语音识别,2.语音合成,3.短文本相似度,4.图灵机器人融合:处理成4个函数

AI篇6====>第一讲_json_57

上边还没有写完,需要一个返回值

AI篇6====>第一讲_读取文件_58

 

 综合版本:

# Author: studybrother sun
import os
from aip import AipSpeech,AipNlp
#从文本到声音
""" 你的 APPID AK SK """
APP_ID = '16027612'
API_KEY = 'B4Pi3KnxI7Gh2xyrafvygQL6'
SECRET_KEY = 'tcl4ZkM7Mkla3ygzFXanrgRjHOTXoWvt'

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, {
'vol': 5, # 音量
"spd": 4, # 语速
"pit": 7, # 语调
"per": 4 # 度丫丫的声音
})
# print(result) #注释这个,显示的更清晰一些
# 识别正确返回语音二进制 错误则返回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,
})
# buffer指的是流,还有上边的client那一行不区分大小写.
print(res.get("result")[0]) #注意,出错的位置没有返回,下一行进行处理
return res.get("result")[0] #注意,出错的位置没有返回,这行进行处理!!!!!!
# print(res)

# 读取文件
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 = {
"reqType": 0,
"perception": {
"inputText": {
"text": "今天天气不错" # 可以修改的位置
},
"inputImage": {
"url": "imageUrl"
},
"selfInfo": {
"location": {
"city": "北京",
"province": "北京",
"street": "信息路"
}
}
},
"userInfo": {
"apiKey": "e8f694123df84f3f855ccb9ad6527c82",
"userId": "12666"
}
}
data["perception"]["inputText"]["text"]=text #这个就是问题
data["userInfo"]["userId"]=uid #这个就是问题
res = requests.post(URL, jsnotallow=data)
# print(res.content) #结果是bytes类型的
# print(res.text) #结果是文本类型的
print(res.json()) # 这个结果是json类型的,这个是字典类型的
# print(res.json().get("intent").get("code"))
return res.json().get("results")[0].get("values").get("text")

text=audio2text("jttqbc.m4a") #首先是语音识别

#自然语言处理 LowB 这是最low版的
score=client_nlp.simnet("你叫什么名字",text).get("score")
print(score)
if score>=0.58:
filename=text2audio("我的名字叫做无极剑圣")
os.system(f"ffplay {filename}") #播放方式1
# os.system(filename) #直接,播放方式2
answer=goto_tl(text,"xiaoagan")

filename = text2audio(answer)
os.system(f"ffplay {filename}")

 

也是研究其他百度的接口:

 

6.百度AI介绍

下图中只是其中一页,不过这个是做的比较全面的平台.

AI篇6====>第一讲_json_59

 

标签:10,20,第一,16,AI,text,30,com
From: https://blog.51cto.com/u_11182673/5848941

相关文章

  • 肖sir__面试第一天课程__项目流程(2)
    项目流程:一、面试官的问法:(1)你们公司的测试流程是什么?(2)给你一个需求你会怎么做?(3)你讲下你的工作?(4)谈谈你们是如何去测试?等回答:1)讲H模型  讲解简化文字流程:内容如......
  • initContainer
    initContainer1.概述1.1初始化容器的用途Init容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码;Init容器可以安全地运行这些工具,避免这些工具导致......
  • initContainer 初始化容器
    initContainer1.概述1.1初始化容器的用途Init容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码;Init容器可以安全地运行这些工具,避免这些工具导致......
  • ES 查询时提示:all shards failed [type=search_phase_execution_exception]
    我的情况和解决方案这种错误大概率是ES的查询语句语法错误,比如我当时是,时间筛选的条件的格式写错了,导致ES查询时解析错误,从而报了​​allshardsfailed[type=search_p......
  • 第一次,给画图
    importturtleturtle.speed(10)turtle.pensize(1.5)turtle.begin_fill()turtle.colormode(255)turtle.fillcolor(28,134,238)turtle.circle(120,360)turtle.end_fil......
  • 第一章、计算机的三大原则
    热身问答硬件(Hardware)和软件(Software)的区别是什么?硬件是支撑计算机跑起来的实体设备,而软件是负责提供给用户良好体验的非实体程序。硬件是看得见摸得着的设备,如......
  • Nacos 版本不一致报错: Request nacos server failed
    在做微服务开发中,测试环境使用Nacos没有问题,但是生产环境服务启动一直报错:com.alibaba.nacos.api.exception.NacosException:Requestnacosserverfailed: atcom.ali......
  • D - Takahashi's Solitaire -- ATCODER
    D-Takahashi'sSolitairehttps://atcoder.jp/contests/abc277/tasks/abc277_d 思路先计算所有的输入的和total,将输入列表首先进行排列找到所有连续段和中最大的......
  • KeyValuePair 和 Dictionary 的关系
    https://www.likecs.com/show-205081943.html#sc=466.6666564941406KeyValuePair 和 Dictionary 的关系1、KeyValuePair    a、KeyValuePair是一个结构体(struc......
  • 信息安全课程设计第一周总结
    基于密码算法库的国密算法支持研究一、任务计划完成LibTomCrypt、Crypto++的配置安装和使用二、任务完成情况(一)配置openeuler,并使用ssh命令做到文件传输(二)配置C语......