zoukankan      html  css  js  c++  java
  • 利用百度轻松语音合成,语音识别

    传送门

    创建一个百度语音的应用

    首先需要登录百度云,接着进入我的控制台,打开百度语音,进入语音应用管理界面,创建一个新的应用 

    接着就能看到自己创建的应用啦

    这里面有三个值 AppID , API Key , Secret Key 记住可以从这里面看到 , 在之后的学习中我们会用到

    好了 百度语音的应用已经创建完成了 接下来 我会用Python 代码作为实例进行应用及讲解

    安装百度的人工智能SDK

    • 首先咱们要 pip install baidu-aip 安装一个百度人工智能开放平台的Python SDK实在是太方便了,这也是为什么我们选择百度人工智能的最大原因

     语音合成

    • 安装好后我们先来测试下,语音合成功能。

    • 具体参数,不详尽之处请看官方文档:传送门

    • 这一步会生成一个名字为audio.m4a的文件
    复制代码
    from aip import AipSpeech
    import os
    
    APP_ID = '11711274'
    API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro'
    SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    
    result = client.synthesis('你好啊', 'zh', 1, {
        "spd": 4,
        'vol': 8,
        "pit": 6,
        "per": 0,
    })
    
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        with open('audio.m4a', 'wb') as f:
            f.write(result)
    else:
        print(result)
    复制代码

    二、语音识别

    安装音频转换工具FFmpeg 

    • 声音这个东西格式太多样化了,如果要想让百度的SDK识别咱们的音频文件,就要想办法转变成百度SDK可以识别的格式PCM。

    • 这里我们选择的是FFmpeg ,下载好后配置好环境变量。

    • 即可在CMD中使用
    ffmpeg -y  -i audio.m4a  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm

     

    • 接着在文件夹中就可以看到pcm格式的文件了

     百度语音识别SDK应用

    • 好了准备工作都做好了就开始到正式接触人工智障了

    • asr函数需要四个参数,第四个参数可以忽略,自有默认值,参照一下这些参数是做什么的 
      • 第一个参数: speech 音频文件流 建立包含语音内容的Buffer对象, 语音文件的格式,pcm 或者 wav 或者 amr。(虽说支持这么多格式,但是只有pcm的支持是最好的)
        
        第二个参数: format 文件的格式,包括pcm(不压缩)、wav、amr (虽说支持这么多格式,但是只有pcm的支持是最好的)
        
        第三个参数: rate 音频文件采样率 如果使用刚刚的FFmpeg的命令转换的,你的pcm文件就是16000
        
        第四个参数: dev_pid 音频文件语言id 默认1537(普通话 输入法模型)
    复制代码
    from aip import AipSpeech
    import os
    
    APP_ID = '11711274'
    API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro'
    SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    
    
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    
    # 识别本地文件
    res = client.asr(get_file_content('audio.pcm'), 'pcm', 16000,{
        'dev_pid': 1536,
    })
    
    print(
        res.get("result")[0]
    )
    复制代码
    •  接着来看看返回值

    成功的dict中 result 就是我们要的识别文本

    失败的dict中 err_no 就是我们要的错误编码,错误编码代表什么呢?

    如果err_no不是0的话,就参照一下错误码表

    到此百度AI语音部分的调用就结束了,是不是感觉很简单。

  • 相关阅读:
    图解HTTP学习笔记——简单的HTTP协议
    Java编程思想学习笔记——类型信息
    Java编程思想学习笔记——字符串
    Java编程思想学习笔记——接口
    Java编程思想学习笔记——复用类
    Java编程思想学习笔记——类的访问权限
    ESLint
    关于常见继承的几种方法
    flux,redux,vuex状态集管理工具之间的区别
    商品放大镜效果
  • 原文地址:https://www.cnblogs.com/Ctrl-cCtrl-v/p/12350183.html
Copyright © 2011-2022 走看看