zoukankan      html  css  js  c++  java
  • 第六篇:语音问答+自然语言处理+图灵机器人

    语音问答+自然语言处理+图灵机器人:  

      百度AI -- 语音识别--python SDK文档:

        https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top 

      图灵机器人API V2.0接入文档:

        https://www.kancloud.cn/turing/www-tuling123-com/718227 

      百度AI--语音合成--SDK文档--python SDK:

        https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 

    (1)图灵机器人配置TuringRobotAPI.py

     1 '''
     2 图灵机器人API V2.0接入文档:https://www.kancloud.cn/turing/www-tuling123-com/718227
     3 '''
     4 import json
     5 import requests
     6 def turingRobotAnswer(question):
     7     request_json={
     8         "reqType":0,    #非必须参数:输入类型:0-文本(默认)、1-图片、2-音频
     9         "perception": { #必须参数:输入信息(注意:输入参数必须包含inputText或inputImage或inputMedia)
    10             "inputText": {          #非必须参数:文本信息
    11                 "text": question     #必须参数:1-128字符    ,直接输入文本
    12             },
    13             # "inputImage": {         #非必须参数:图片信息
    14             #     "url": "imageUrl"
    15             # },
    16             # "inputMedia":{          #非必须参数:音频信息
    17             #
    18             # },
    19             # "selfInfo": {           #非必须参数:客户端属性
    20             #     "location": {
    21             #         "city": "北京",
    22             #         "province": "北京",
    23             #         "street": "信息路"
    24             #     }
    25             # }
    26         },
    27         "userInfo": {   #必须参数:用户参数
    28             "apiKey": "11cb5ce350c54016974151892635388b",   #必须参数:32位,机器人标识
    29             "userId": "123"                                 #必须参数:长度小于等于32位,用户唯一标识
    30         }
    31     }
    32     result=requests.post('http://openapi.tuling123.com/openapi/api/v2',json=request_json)#POST请求,参数文档有说明
    33     # print(result)
    34     text_answer=json.loads(result.content).get('results')[0].get('values').get('text')
    35     return text_answer

    (2)语音应答逻辑AI_QA.py:

     1 from aip import AipSpeech,AipNlp
     2 import os
     3 from TuringRobotAPI import turingRobotAnswer
     4 
     5 APP_ID = '16815394'
     6 API_KEY = 'jM4b8GIG9gzrzySTRq3szK2E'
     7 SECRET_KEY = 'iE626cEpjT1iAVwh24XV5h1QFuR8FPD2'
     8 
     9 SPEECH_client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    10 NlP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    11 
    12 def get_file_content(filePath):
    13 
    14     #文件格式转换成pcm(前提是需要安装ffmpeg软件并配置环境变量)
    15     pcm_filePath = filePath.split('.')[0] + '.pcm'
    16     cmd_str=f'ffmpeg -y  -i {filePath}  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {pcm_filePath}'
    17     os.system(cmd_str)#调用os.system()在CMD执行命令
    18     filePath=pcm_filePath
    19 
    20     with open(filePath, 'rb') as fp:
    21         return fp.read()
    22 
    23 
    24 # ASR识别本地文件(语音识别)
    25 result=SPEECH_client.asr(get_file_content('0_question2.m4a'), 'pcm', 16000, {
    26     'dev_pid': 1536,
    27 })
    28 text=result.get('result')[0]
    29 # print(text)
    30 
    31 #NLP自然语言处理,相似度判断(NLP自然语言处理)
    32 A='我不知道你在说什么!'
    33 score=NlP_client.simnet(text,'你叫什么名字?').get('score')
    34 # print(score)
    35 if score > 0.58:
    36     A='你好,我是语音小助手飞飞!'
    37 else:
    38     A=turingRobotAnswer(text)#图灵机器人接入
    39 # print(A)
    40 
    41 
    42 #TTS合成语音文件(语音合成)
    43 voice={'spd':5,'pit':7,'vol': 6,'per':4,}
    44 audio=SPEECH_client.synthesis(A,'zh',1,voice)
    45 # print(audio)
    46 if not isinstance(audio,dict):
    47     with open('0_answer2.mp3','wb') as f:
    48         f.write(audio)

    将语音先用ffmpeg工具进行格式转换,然后通过语音识别,转换成文字进行自然语言处理,调用图灵机器人进行应答,然后对结果文字尽心语音合

  • 相关阅读:
    meta标签中的http-equiv属性使用介绍
    MySQL中批量执行SQL语句
    <fmt:formatNumber/>显示不同地区的各种数据格式
    <fmt:setBundle/>标签
    <fmt:bundle/>、<fmt:message/>、<fmt:param/>资源国际化
    <fmt:setTimeZone/>设置时区
    <fmt:timeZone/>显示全球时间
    初识Storm
    storm安装及启动
    HBase API 的使用(一)
  • 原文地址:https://www.cnblogs.com/open-yang/p/11197811.html
Copyright © 2011-2022 走看看