• 37.图灵接口及电脑语音聊天


    图灵接口及电脑语音聊天


    一,图灵接口

    • 注册账号创建机器人 (http://www.tuling123.com/member/robot/index.jhtml)
    • api接口文档 (https://www.kancloud.cn/turing/www-tuling123-com/718227)
    • 数据接口地址 (http://openapi.tuling123.com/openapi/api/v2)
    • 请求方式:http post,请求参数为json
    • urlopen,Request (urlopen:打开一个连接,Request:是用来封装打开一个链接的时候你可能需要提交一些数据)
      • from urllib.request import urlopen,Request

      •  

        单纯的访问用urlopen就可以

      •  

        但是需要post提交数据就得用request结合提交数据体

    • 代码编写 图灵接口.py:
    from urllib.request import urlopen,Request #urlopen:打开一个连接,Request:是用来封装打开一个链接的时候你可能需要提交一些数据)
    import json
    def tl_func(qusetion):
        url = 'http://openapi.tuling123.com/openapi/api/v2'
        data = json.dumps({
            "perception": {
                "inputText": {
                    "text": "%s" % qusetion
                },
            },
            "userInfo": {
                "apiKey": "08a4694a51b145b4ab7178d86a1ae8d7",
                "userId": "D46D6DD8273C" #D4-6D-6D-D8-27-3C
            }
        }).encode('utf-8')
        headers = {'Content-Type':'application/json'}
        req = Request(url=url,data=data)
        response = json.loads(urlopen(req).read().decode('utf-8')) #josn.loads 定义返回数据类型为字典
        #print(response['results'][0]['values']['text']) #取出图灵返回的数据值
        result = response['results']
        res = ''
        for var in result:
            res += '/n'.join(list((var['values'].values()))) #这个意思是不管图灵返回几个数据 我们都依次取出来以换行的形式拼接起来,变成一行一行的数据
        else:
            return res
        return None
    def main():
        result = tl_func(qusetion)
        print(result)
    if __name__ == '__main__':
        qusetion = '你叫什么呀'
        main()
    
    '''
    下面是取出response返回的字典数据结构,然后可以取出图灵返回的数据,提供参考
    {
        'intent': {'actionName': '', 'code': 10004, 'intentName': ''}, 
        'results': [
                {
                'resultType': 'text', 
                'values': {'text': '我们每天都打招呼吧'}, 
                'groupType': 1
                }
                    ], 
        'emotion': 
            {
            'robotEmotion': {'d': 0, 'a': 0, 'emotionId': 0, 'p': 0}, 
            'userEmotion': {'d': 0, 'a': 0, 'emotionId': 10300, 'p': 0}
            }
    }
    '''
    

    运行结果: 

    E:python学习资料上课代码编写代码练习py>python e:/python学习资料/上课代码编写/代码练习py/图灵接口.py
    叫我图灵机器人就可以了
    
    E:python学习资料上课代码编写代码练习py>python e:/python学习资料/上课代码编写/代码练习py/图灵接口.py
    人见人爱的图灵机器人,记住了吧~ 

    二,电脑语音聊天:图灵接口结合百度云语音识别接口,

    • 语音播报
      • pyttsx3.init 初始化音频设备,然后播报
      • 安装pip3 install pyttsx3
      1. eg = init()   #初始化音频设备
      2. eg.say('hello,你好')
      3. eg.runAndWait() #阅读
      4. eg.close() #关闭设备
    • 解决python提示No module named 'win32com'
      • 安装下载对应的python系统位数的pywin32软件安装
      • 地址:https://sourceforge.net/projects/pywin32/files/pywin32/
    • 代码整合如下:
    from 百度云 import *
    from  图灵接口 import *
    from pyttsx3 import init
    def main():
        eg = init()
        while True:
            try:
                data = record_audio()
                question = baidu_fenxi(data)
                talk_str = tl_func(question)
                print(talk_str)
                eg.say(talk_str)
                eg.runAndWait()
            except KeyboardInterrupt:
                break
    if __name__ == '__main__':
    	main()
    

    运行结果:(特别注意连个脚本要放在同一个目录下)

    E:python学习资料上课代码编写代码练习py>python e:/python学习资料/上课代码编写/代码练习py/电脑聊天.py
    你请我吃饭
    一听就知道是人名。
    好吃嘛!想吃!
    没有一个
    没有一个
    你想说什么,慢慢说  
     
  • 相关阅读:
    1 从瀑布到敏捷——漫画解读软件开发模式变迁史(转载)
    xshell 常用命令1
    Python---3基础输入方法
    React 初试
    Js 入门文档
    SpringCloud 入门知识篇
    SpringBoot mysql, redis 配置
    工作常用命令
    Java 内置锁 重入问题
    牛顿迭代法, 开根号
  • 原文地址:https://www.cnblogs.com/zhangan/p/10186201.html
Copyright © 2020-2023  润新知