zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    qt setfixedsize以后怎么让窗口可正常resize
    总线操作使用工具
    DTK 获取活动色
    qt 设置背景色
    python_itchat模块登陆问题
    python_基础知识
    python_爬虫_str类型的html文本去标签
    工作__问题
    服务器_sshfs的安装、挂载、取消挂载
    python_爬虫_通过selenium获取人人网cookie值并模拟登陆个人界面
  • 原文地址:https://www.cnblogs.com/XLHIT/p/11197444.html
Copyright © 2011-2022 走看看