zoukankan      html  css  js  c++  java
  • AI 基础

    what AI ?

    人工智能(Artificial Intelligence),英文缩写为AI.
    人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
    人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
    --> 人 创造的 '智慧能力', 同样具备
    听 (语音识别)
    说 (语音合成)
    看 (图像视频文字识别) 交通抓违章 刷脸解锁 视频APP审核机制 文字识别身份证提取信息,扫一扫翻译
    理解(语言文字图像视频理解等逻辑处理)
    思考(理解后的逻辑处理) 等能力.

    一些现在用的例子:

    像  小米小爱同学, 苹果 Siri , 微软10 Cortana  交通摄像抓违章  银行卡申办机器  联通10010智能后台  等等 .. .. 

    怎么降低入门门槛呢?  一家很开放的公司?  就是  Baidu 大法

    ai.baidu.com   -- 百度AI平台   我们学习就用这个

    下面 show time:

    首先  www.ai.baidu.com   登录进去  进入控制台
    之后安装 百度工具包 pip install baidu-aip ,根据百度技术文档,python sdk配合使用.
         pycharm里面解释器下搜索出来install也行
    -- 语音合成(文字转语音) -- 
    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)  #以上代码,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,
    系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
    
    result = client.systhesis('你好,见到你很高兴','zh',1,{
        'vol':5, #音量,取值0-15,默认为5中音量
        'pit':6, #音调,取值0-9,默认为5中语调
        'spd':4, #语速,取值0-9,默认为5中语速
        'per':0 #发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女
    })
    
    if not isinstance(result,dict):
        with oprn('audio.mp3','wb') as f:
            f.write(result)
    #这样就会生成一个audio.mp3的音频,打开即可收听到 '你好,见到你很高兴'
    -- 语音识别(录音转文字) -- 
    tips:我们继续根据百度Python SDK技术文档进行使用;简述注意事项: 1.支持的音频格式有pcm、amr(压缩格式); 2.语音上限时长60s,超过就会报错!
    -- 音频转码准备
    FFmpeg
    1. 下载链接 http://www.ffmpeg.org/download.html
    2.下载到安装包后,进行解压,找到bin目录,添加到windows环境变量,重启pycharm.,然后便可以执行转换音频格式了
    3. ffmpeg -y  -i a.wma  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 a.pcm
    4. cmd 下面检验下有没好
    语音转文字
    from aip import AipSpeech
    import os
    APP_ID = '15845079'
    API_KEY = '5GGaPeBu2I0LsONjlWhM04yL'
    SECRET_KEY = 'Uo8zIi8VRZMRgqKkCQaqaGIorsQtkDlw'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    # 读取文件
    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()
    
    # 识别本地文件
    res = client.asr(get_file_content('ob.wma'), 'pcm', 16000, {
        'dev_pid': 1536, #标准普通话,简单英语
    })
    print(res.get('result')[0])

     简单二合一

    from aip import AipSpeech
    from aip import AipNlp
    import os
    
    APP_ID = '15845079'
    API_KEY = '5GGaPeBu2I0LsONjlWhM04yL'
    SECRET_KEY = 'Uo8zIi8VRZMRgqKkCQaqaGIorsQtkDlw'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  # 实例化
    nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)  # 实例化
    
    res = nlp_client.simnet('你叫什么名字','你贵姓')
    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()
    
    # 识别本地文件
    res = client.asr(get_file_content('ob.wma'), 'pcm', 16000, {
        'dev_pid': 1536,
    })
    text = res.get('result')[0]
    print(text)
    
    # 智能问答
    def my_nlp(text):
    
        if nlp_client.simnet(text,'你叫什么名字').get('score')>=0.58:
            A = '我叫音王吧'
            return A
    
        if nlp_client.simnet(text, '你今年几岁了').get('score') >= 0.58:
            A = '千年999'
            return A
        A = '我不知道你在说什么'
        return A
    A = my_nlp(text)
    
    result = client.synthesis(A, 'zh', 1, {
        'vol': 5,
        'per': 4,
        'spd': 4,
        'pit': 7
    })
        # import time
    
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        # with open(f'{time.time()}.mp3', 'wb') as f:
        with open('audio.mp3', 'wb') as f:
            f.write(result)
    
    os.system('audio.mp3')  # 自动播放
    
    # 自然语言处理  短文本相似度  AipNlp是自然语言处理的Python SDK客户端,为使用自然语言处理的开发人员提供了一系列的交互方法
    # 相似度结果  运算出来 score   低于0.58的可以丢弃   大于0.8的基本认定一致

    白热化  智能机器人 初实现

    首先访问 www.tuling123.com  注册后 登录创建一个机器人
    要用  api接入
    文档  https://www.kancloud.cn/turing/www-tuling123-com/718218
    接入教程 2.0  
    接口地址  http://openapi.tuling123.com/openapi/api/v2
    请求方式  HTTP POST
    请求参数  参数格式要求 json
    示例:
    {
    "reqType":0, "perception": { "inputText": { "text": "附近的酒店" }, "inputImage": { "url": "imageUrl" }, "selfInfo": { "location": { "city": "北京", "province": "北京", "street": "信息路" } } }, "userInfo": { "apiKey": "", "userId": "" } }

    一个对话处理   处理音频后返回音频自动播放

    from aip import AipSpeech
    from aip import AipNlp
    import os
    
    APP_ID = '15845079'
    API_KEY = '5GGaPeBu2I0LsONjlWhM04yL'
    SECRET_KEY = 'Uo8zIi8VRZMRgqKkCQaqaGIorsQtkDlw'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  # 实例化
    nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)  # 实例化
    
    res = nlp_client.simnet('你叫什么名字','你贵姓')
    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()
    
    # 识别本地文件
    res = client.asr(get_file_content('naojin.wma'), 'pcm', 16000, {
        'dev_pid': 1536,
    })
    text = res.get('result')[0]
    print(text)
    
    # 智能问答
    import requests  # 请求模块
    
    def to_tuling(text,uid):  # 问题
        data = {
            "reqType":0,
            "perception": {
                "inputText": {
                    "text": "上海"
                },
            },
            "userInfo": {
                "apiKey": "29f1be0165d74f7290a8cd899a4358a8",
                "userId": "123"
            }
        }
        data['perception']['inputText']['text'] = text
        data['userInfo']['userId'] = uid
        res = requests.post('http://openapi.tuling123.com/openapi/api/v2',json=data)
        print(res)
    
        res_json = res.json()
        text = res_json.get('results')[0].get('values').get('text')
        return text
    
    def my_nlp(text):
    
        if nlp_client.simnet(text,'你叫什么名字').get('score')>=0.58:
            A = '我叫音王吧'
            return A
    
        if nlp_client.simnet(text, '你今年几岁了').get('score') >= 0.58:
            A = '千年999'
            return A
        A = to_tuling(text,'007')
        return A
    A = my_nlp(text)
    
    result = client.synthesis(A, 'zh', 1, {
        'vol': 5,
        'per': 4,
        'spd': 4,
        'pit': 7
    })
        # import time
        
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        # with open(f'{time.time()}.mp3', 'wb') as f:
        with open('audio.mp3', 'wb') as f:
            f.write(result)
    os.system('audio.mp3')  # 自动播放
  • 相关阅读:
    Docker容器案例:应用 Mysql
    rpm 命令参数使用详解
    MySQL中的两种临时表
    Yum本地Rpm库设置
    编程学习 博客
    yum -------包安装库
    Linux 基础 —— RPM
    在CentOS上编译安装PostgreSQL
    Linux上安装JDK环境变量配置
    yum_rpm(利用dvd建立本地yum库)
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10594820.html
Copyright © 2011-2022 走看看