zoukankan      html  css  js  c++  java
  • Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别

    ​ 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径。目前市面上主流的AI技术提供公司有很多,比如百度,阿里,腾讯,主做语音的科大讯飞,做只能问答的图灵机器人等等。这些公司投入了很大一部分财力物力人力将底层封装,提供应用接口给我们,尤其是百度,完全免费的接口。既然百度这么仗义,咱们就不要浪费掉怎么好的资源,从百度AI入手,开启人工智能之旅

    开启人工智能技术的大门 : http://ai.baidu.com/

    首先进入控制台,注册一个百度的账号(百度账号通用);打开百度语音,进入语音应用管理界面

    创建一个新的应用;

    创建语音应用App

    就可以创建应用了,回到应用列表我们可以看到已创建的应用了

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

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

    一.安装百度的人工智能SDK:

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

    安装完成之后就来测试一下:

    baidu-aip Python SDK 语音合成技术文档 : https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top;我们可以选择Python SDK

    语音合成

    # -*- coding: utf-8 -*-
    # @Time    : 2019/9/28 11:01
    # @Author  : AnWen
    from aip import AipSpeech
    
    """ 你的 APPID AK SK """
    APP_ID = '你的 App ID'
    API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    
    # 详细参数可看python sdk 文档
    result = client.synthesis('你好百度', 'zh', 1, {
    	'vol': 5,	#音量,取值0-15,默认为5中音量
    	'per': 3,	#发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女	
    	'spd': 7,   #语速,取值0-15,默认为5中语速
    })
    
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
    	with open('audio.mp3', 'wb') as f:
    		f.write(result)
    # 在工程目录下,就可以看到 audio.mp3 这个文件了,来听一听
    

    语音识别

    百度的SDK识别咱们的音频文件,就要想办法转变成百度SDK可以识别的格式PCM,

    可以实现自动化转换格式并且屡试不爽的工具 : FFmpeg 这个工具的下载地址是 : 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk

    FFmpeg 环境变量配置:

    首先你要解压缩,然后找到bin目录,我的目录是 C:ffmpegin

    尝试一下,是否配置成功:cmd 执行:ffmpeg

    看到这个界面就算配置成功了,配置成功有什么用呢, 这个工具可以将wav wma mp3 等音频文件转换为 pcm 无压缩音频文件

    然后我们用命令行对这个 audio.wav 进行pcm格式的转换然后得到 audio.pcm

    命令是 : ffmpeg -y -i audio.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm

    百度语音识别SDK的应用:
    import os
    
    from aip import AipSpeech
    
    """ 你的 APPID AK SK """
    APP_ID = '你的 App ID'
    API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    
    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")
    	with open(f"{filePath}.pcm", 'rb') as fp:
    		return fp.read()
    
    # 识别本地文件
    #asr函数需要四个参数,第四个参数可以忽略,自有默认值,参照一下这些参数是做什么的
    #第一个参数: speech 音频文件流 建立包含语音内容的Buffer对象, 语音文件的格式,pcm 或者 wav 或者 amr。(虽说支持这么多格式,但是只有pcm的支持是最好的)
    #第二个参数: format 文件的格式,包括pcm(不压缩)、wav、amr (虽说支持这么多格式,但是只有pcm的支持是最好的)
    #第三个参数: rate 音频文件采样率 如果使用刚刚的FFmpeg的命令转换的,你的pcm文件就是16000
    #第四个参数: dev_pid 音频文件语言id 默认1537(普通话 输入法模型)
    res = client.asr(get_file_content('jttqhbc.m4a'), 'pcm', 16000, {
    	'dev_pid': 1536,
    })
    print(res.get("result")[0])
    

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

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

  • 相关阅读:
    6 开发工具IDE-pycharm
    5 循环控制
    react native 遇到的坑
    代码缩略图插件
    JEECMS-自定义标签[list]
    Jeecms自定义标签用法[单个内容]
    ReactNative环境搭建
    修改浏览器accept使支持@ResponseBody
    [转]MyEclipse for Spring2014破解
    js正则验证手机号
  • 原文地址:https://www.cnblogs.com/an-wen/p/11604093.html
Copyright © 2011-2022 走看看