AI

 

预备资料:

1.FFmpeg:

链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg

密码:w6hk

 

 安装baidu-aip

2.baidu-aip:

pip install baidu-aip

 

此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径

目前市面上主流的AI技术提供公司有很多,比如百度,阿里,腾讯,主做语音的科大讯飞,做只能问答的图灵机器人等等

这些公司投入了很大一部分财力物力人力将底层封装,提供应用接口给我们,尤其是百度,完全免费的接口

 

基础入门

1首先进入控制台,注册一个百度的账号(百度账号通用)

2开通一下我们百度AI开放平台的授权

3然后找到已开通服务中的百度语音

走到这里,想必已经知道咱们要从语音入手了,语音识别和语音合成

4打开百度语音,进入语音应用管理界面,创建一个新的应用 

 

5创建语音应用App   

就可以创建应用了,回到应用列表我们可以看到已创建的应用了

这里面有三个值 AppID , API Key , Secret Key 记住可以从这里面看到 , 在之后我们会用到

好了 百度语音的应用已经创建完成了 接下来 我会用Python 代码作为实例进行应用

 

1安装百度的人工智能SDK:

首先咱们要 pip install baidu-aip 安装一个百度人工智能开放平台的Python SDK实在是太方便了

语音合成

技术上,代码上任何的疑惑,都可以从官方文档中得到答案

baidu-aip Python SDK 语音合成技术文档 : https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top

新建AipSpeech

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

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

常量APP_ID在百度云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

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)


这是与百度进行一次加密校验 , 认证你是合法用户 合法的应用

AipSpeech 是百度语音的客户端 认证成功之后,客户端将被开启,这里的client 就是已经开启的百度语音的客户端了

语音合成举例

举例,要把一段文字合成为语音文件:

result  = client.synthesis('你好百度123', 'zh', 1, {
    'vol': 5,
})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('auido.mp3', 'wb') as f:
        f.write(result)

举例

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '16818907'
API_KEY = '7Th2yeY2B0V1d6PNWjwCj5GG'
SECRET_KEY = 'DmeQhdwFeclKCdunwWDdASpwfnxmEskf'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('好好学习,不做咸鱼 啦啦啦', 'zh', 1, {
    'vol': 5,
    "spd": 5,
    "pit": 6,
    "per": 1,

})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('audio.mp3', 'wb') as f:
        f.write(result)
View Code

语音识别

哎,每次到这里,我都默默无语泪两行,声音这个东西格式太多样化了,如果要想让百度的SDK识别咱们的音频文件,就要想办法转变成百度SDK可以识别的格式PCM

目前DragonFire已知可以实现自动化转换格式并且屡试不爽的工具 : FFmpeg 这个工具的下载地址是 : 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk

配置环境变量  。。。。。

举例

import os

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '16818907'
API_KEY = '7Th2yeY2B0V1d6PNWjwCj5GG'
SECRET_KEY = 'DmeQhdwFeclKCdunwWDdASpwfnxmEskf'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)


# # 读取文件
# def get_file_content(filePath):
#     with open(filePath, 'rb') as fp:
#         return fp.read()

# 文件格式转化 进行函数封装 读取文件 #添加环境变量后,记得重启python 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('111.m4a'), 'pcm', 16000, { 'dev_pid': 1536, }) print(res) print(res.get("result")[0])
{'corpus_no': '6714172644029622849', 'err_msg': 'success.', 'err_no': 0, 'result': ['看看现在有网没有'], 'sn': '367226486731563265138'}
看看现在有网没有

具体参数参照百度AI 语音合成

 

 一问一答

import os

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '16818907'
API_KEY = '7Th2yeY2B0V1d6PNWjwCj5GG'
SECRET_KEY = 'DmeQhdwFeclKCdunwWDdASpwfnxmEskf'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)


#添加环境变量后,记得重启python
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('111.m4a'), 'pcm', 16000, {
    'dev_pid': 1536,
})

print(res.get("result")[0])
Q=res.get("result")[0]
A="伤心,我听不懂"
if Q=="你叫什么名字":
    A="我是 三刀流   索罗"

result = client.synthesis(A, 'zh', 1, {
    'vol': 5,
    "spd": 5,
    "per": 1,

})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('Answer.mp3', 'wb') as f:
        f.write(result)
View Code

NLP

from aip import AipNlp

""" 你的 APPID AK SK """
APP_ID = '16821793'
API_KEY = '260SCsM76USZBUFYdMLT6hvT'
SECRET_KEY = 'wDzQ55CBfR97jeAEsrfhLId1usI0P06m'

# 注意 导入应用中  加上短文本相似度
NLP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
res = NLP_client.simnet("你叫什么名字","你的名字是什么")

print(res)
print(res.get("score"))

语音 与短文本相似度

import os

from aip import AipSpeech, AipNlp

""" 你的 APPID AK SK """
APP_ID = '16821793'
API_KEY = '260SCsM76USZBUFYdMLT6hvT'
SECRET_KEY = 'wDzQ55CBfR97jeAEsrfhLId1usI0P06m'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
NLP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)


# 添加环境变量后,记得重启python
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('111.m4a'), 'pcm', 16000, {
    'dev_pid': 1536,
})

print(res.get("result")[0])

Q = res.get("result")[0]
sim = NLP_client.simnet(Q, "告诉我,你的名字").get("score")
print(sim)
A = "伤心,我听不懂"
if sim >= 0.58:
    A = "我是 三刀流   索罗"

result = client.synthesis(A, 'zh', 1, {
    'vol': 5,
    "spd": 5,
    "per": 1,

})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('Answer.mp3', 'wb') as f:
        f.write(result)

图灵机器人  的创建    文档 参考官方

import requests



# 请求参数

data = {
        "perception": {
            "inputText": {
                "text": "今天天气怎么样"
            }
        },
        "userInfo": {
            "apiKey": "c2f49e25e2c441aa83765740c470b660",
            "userId": "123"
        }
}


res=requests.post("http://openapi.tuling123.com/openapi/api/v2",json=data)
res_dict=res.json()
print(res_dict)
print(res_dict.get("results")[0].get("values").get("text"))
View Code

 

函数版  图灵

import requests


# 请求参数
def go_tl(Q):
    data = {
        "perception": {
            "inputText": {
                "text":Q
            }
        },
        "userInfo": {
            # 自己创建的图灵机器人的apikey
            "apiKey": "c2f49e25e2c441aa83765740c470b660",
            "userId": "123"
        }
}

    # API 接口地址
    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")
import os

from aip import AipSpeech, AipNlp

from tuling import go_tl

""" 你的 APPID AK SK """
APP_ID = '16821793'
API_KEY = '260SCsM76USZBUFYdMLT6hvT'
SECRET_KEY = 'wDzQ55CBfR97jeAEsrfhLId1usI0P06m'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
NLP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)


# 添加环境变量后,记得重启python
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('222.m4a'), 'pcm', 16000, {
    'dev_pid': 1536,
})

print(res.get("result")[0])

Q = res.get("result")[0]
sim = NLP_client.simnet(Q, "告诉我,你的名字").get("score")
print(sim)
A = "伤心,我听不懂"
if sim >= 0.58:
    A = "我是 三刀流   索罗"
else:
   
     A=go_tl(Q)

result = client.synthesis(A, 'zh', 1, {
    'vol': 5,
    "spd": 5,
    "per": 1,

})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('Answer.mp3', 'wb') as f:
        f.write(result)

 

posted @ 2019-07-16 20:58  我的IT007  阅读(742)  评论(0编辑  收藏  举报