此篇是人工智能应用的重点, 只用现成的技术不做底层算法, 也是让初级程序员快速进入人工智能行业的捷径. 目前市面上主流的 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:\FFMPEG\bin
尝试一下, 是否配置成功: 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 语音部分的调用就结束了, 是不是感觉很简单
来源: https://www.cnblogs.com/an-wen/p/11604093.html