智能玩具之图灵机器人

www.tuling123.com

图灵机器人的api文档:https://www.kancloud.cn/turing/www-tuling123-com/718218

 

接口地址:http://openapi.tuling123.com/openapi/api/v2

 

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": "82acbbb4d4a34b1f882dc46e82db3e21",  #api文档上面的安排key值
        "userId": '123123'
    }

}

#requests的post请求,序列化data
res = requests.post("http://openapi.tuling123.com/openapi/api/v2",json=data)
# print(res) #返回值为<Response [200]>
# print(res.content) #返回一个字节流
# print(res.text) #返回一个文本
# print(res.json()) #返回一个字典
# print(res.json().get('intent').get('code')) #获取res的一个值
print(res.json())

 

 

 

import os
#语音客户端
from aip import AipSpeech, AipNlp

""" 你的 APPID AK SK """
APP_ID = '16027163'
API_KEY = 'wFXvuArTz8aWFou05jjs8XIG'
SECRET_KEY = 'Ty6jGhtdR9GzCs8smn5HRGNNwtz0QkUQ'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY) #短文本接口  AipNlp

#短文本校验两个文本的相似度
# res = client_nlp.simnet('你叫神马名字','你的名字是神马')
# print(res)#   'score': 0.810756

#语音合成
def text2audio(text):  #参数是text
    result = client.synthesis(text, 'zh', 1, {  #将参数传进去
        'vol': 5,  # 音量大小
        "spd": 5,  # 语速
        "pit": 5,  # 语调
        "per": 1,  # 情感发音
    })

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

# 语音识别
def audio2text(filepath):
    ret = client.asr(get_file_content(filepath), 'pcm', 16000, {
        'dev_pid': 1536,
    })
    return ret.get('result')[0]  # 得到语音文件的文本内容

# 读取文件  (固定格式)
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): #参数需要一个文本和userId
    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": "82acbbb4d4a34b1f882dc46e82db3e21",  # api文档上面的安排key值
            "userId": '123123'
        }

    }
    #获取data里面的text和userId  作为参数导入到goro_tl函数中
    data['perception']['inputText']['text'] = text
    data['userInfo']['userId'] = uid
    # requests的post请求,序列化data
    res = requests.post(url, json=data)

    print(res.json())
    # 返回一个文本
    return res.json().get('results')[0].get('values').get('text')

text=audio2text('2.m4a')  #通过语音识别将语音装换成文本


#自然语言处理

if client_nlp.simnet('有音吗',text).get('score') >=0.58: #短文本相似度>=0.58
    filename = text2audio('我的名字叫大王') #回复语音,通过语音合成,将文本变成语音
    # os.system(f"ffplay{filename}") #使用ffplay播放器
    os.system(filename) #系统自动处理需要的播放器

#goto_tl函数的实例化
answer = goto_tl(text,'123')
filename = text2audio(answer)  # 回复语音,通过语音合成,将文本变成语音
os.system(filename)  # 系统自动处理需要的播放器

 

posted @ 2019-04-16 22:09  QV  阅读(494)  评论(0编辑  收藏  举报