人工智能第二篇

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) #系统自动处理需要的播放器

 

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