人工智能API调用 - 实现语音合成,语音识别,语音聊天机器人

人工智能 - 语音合成,语音识别,语音聊天机器人

现成的AI算法平台http://ai.baidu.com/

语音合成
根据百度大佬提供的文档,作出vb.net教程以下小栗子:
1.下载

pip install baidu-aip
2.代码

from aip import AipSpeech

""" 你的 APPID AK SK 
    控制台 -> 百度语音-> 创建或管理应用
"""
APP_ID = '15837844'
API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  # 实例化


def text2audio(text):
    """一些参数的配置,详见文档"""
    result = client.synthesis(text, 'zh', 1, {
        'vol': 5,
        'per': 4,
        'spd': 4,
        'pit': 7,
    })

    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        print(result)
        with open('audio.mp3', 'wb') as f:
            f.write(result)

语音识别
1.下载 ffmpeg 用于将语音文件转python基础教程换为pcm格式

链接: https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg

密码: w6hk

pip pip install baidu-aip
3.代码

from aip import AipSpeech
    import os
    
    """ 你的 APPID AK SK """
    APP_ID = '15837844'
    API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
    SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
    
    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")  # 使用ffmpeg转换格式
        with open(f"{filePath}.pcm", 'rb') as fp:
            return fp.read()
    
    
    # 识别本地文件
    res = client.asr(get_file_content('wyn.wav'), 'pcm', 16000, {
        'dev_pid': 1536,
    })
    
    
    print(res.get("result")[0])
    
    
    # if res.get("result")[0] == "你叫什么名字":
    #     text2audio("我叫银王八")

语音聊天机器人
1.为了更快捷的开发, 我们可以调用福林机器人的API

http://www.tuling123.com/

在福林机器人里自定义机器人部c#教程分功能.

2.代码

from aip import AipSpeech
    from aip import AipNlp  # 自然语言处理,词义相似度
    import os
    
    """ 你的 APPID AK SK """
    APP_ID = '15837844'
    API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
    SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    nlp_client = AipNlp(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('jgxh.wma'), 'pcm', 16000, {
        'dev_pid': 1536,
    })
    text = res.get("result")[0]
    
    """福林机器人智能回答函数"""
    import requests
    
    
    def to_tuling(text, uid):
        data = {
            "perception": {
                "inputText": {
                    "text": "北京"
                }
            },
            "userInfo": {
                "apiKey": "a4c4a668c9f94d0c928544f95a3c44fb",
                "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.content)
        res_json = res.json()
    
        text = res_json.get("results")[0].get("values").get("text")
        print(text)
        return text
    
    
    """语音相似度判断函数"""
    def my_nlp(text):
        if nlp_client.simnet(text, "你叫什么名字").get("score") >= 0.75:
            A = "我叫如花"
            return A
    
        if nlp_client.simnet(text, "你今年几岁了").get("score") >= 0.75:
            A = "我今年999岁了"
            return A
        
        A = to_tuling(text, "open123")  # 如果不符合自定义条件,那么[vb.net教程](https://www.xin3721.com/eschool/VBNetxin3721/)调用福林机器人API
        return A
    
    """开始执行"""
    A = my_nlp(text)
    result = client.synthesis(A, 'zh', 1, {
        'vol': 5,
        'per': 4,
        'spd': 4,
        'pit': 7,
    })
    
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        # print(result)
        with open('audio.mp3', 'wb') as f:
            f.write(result)
    
    """自动执行audio.mp3, 打开软件为默认打开软件"""
    os.system('audio.mp3')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值