zoukankan      html  css  js  c++  java
  • 人工智能第二篇

    1. 第一版智能问答系统------------最low版

    import os
    #语音客户端
    from aip import AipSpeech
    """ 你的 APPID AK SK """
    APP_ID = '16027163'
    API_KEY = 'wFXvuArTz8aWFou05jjs8XIG'
    SECRET_KEY = 'Ty6jGhtdR9GzCs8smn5HRGNNwtz0QkUQ'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    
    #语音合成
    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'   #返回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()
    
    
    text=audio2text('2.m4a')  #通过语音识别将语音装换成文本
    #自然语言处理
    if text =='这个有声音吗':
        filename = text2audio('我的名字叫大王') #回复语音,通过语音合成,将文本变成语音
        # os.system(f"ffplay{filename}") #使用ffplay播放器
        os.system(filename) #系统自动处理需要的播放器

     2. 第二版智能问答系统  ---通过短文本相似度来识别

      短文本接口:client = AipNlp(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

        查看官方文档:https://ai.baidu.com/docs#/NLP-Python-SDK/6dfe1b04

    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()
    
    
    
    
    text=audio2text('2.m4a')  #通过语音识别将语音装换成文本
    
    
    #自然语言处理
    # if text =='这个有声音吗':
    # if client_nlp.simnet('有音吗',text):
    if client_nlp.simnet('有音吗',text).get('score') >=0.58: #短文本相似度>=0.58
        filename = text2audio('我的名字叫大王') #回复语音,通过语音合成,将文本变成语音
        # os.system(f"ffplay{filename}") #使用ffplay播放器
        os.system(filename) #系统自动处理需要的播放器
  • 相关阅读:
    找出互联网符合的产品实例
    以软件周期来说明不同的测试的使用情况
    scrapy多个page爬取, post请求, 通过爬到的URL继续发请求爬页面
    Scrapy 安装, 基础使用, 持久化存储
    Linux nginx+uWSGI+django+virtualenv+supervisor发布web服务器
    Linux Nginx
    Linux virtualenv, virtualenvwrapper, pip freeze
    Linux Python安装
    Redis, Python操作Redis, Linux操作Redis, Redis命令, Redis发布订阅, Redis持久化, Redis主从同步
    爬虫 selenium
  • 原文地址:https://www.cnblogs.com/l1222514/p/10719775.html
Copyright © 2011-2022 走看看