Python⼈⼯智能第⼀篇:语⾳合成和语⾳识别
此篇是⼈⼯智能应⽤的重点,只⽤现成的技术不做底层算法,也是让初级程序员快速进⼊⼈⼯智能⾏业的捷径。⽬前市⾯上主流的AI技术提供公司有很多,⽐如百度,阿⾥,腾讯,主做语⾳的科⼤讯飞,做只能问答的图灵机器⼈等等。这些公司投⼊了很⼤⼀部分财⼒物⼒⼈⼒将底层封装,提供应⽤接⼝给我们,尤其是百度,完全免费的接⼝。既然百度这么仗义,咱们就不要浪费掉怎么好的资源,从百度AI⼊⼿,开启⼈⼯智能之旅
⾸先进⼊控制台,注册⼀个百度的账号(百度账号通⽤);打开百度语⾳,进⼊语⾳应⽤管理界⾯
就可以创建应⽤了,回到应⽤列表我们可以看到已创建的应⽤了
这⾥⾯有三个值 AppID , API Key , Secret Key 记住可以从这⾥⾯看到 , 在之后的学习中我们会⽤到
好了百度语⾳的应⽤已经创建完成了接下来我会⽤Python 代码作为实例进⾏应⽤及讲解
⼀.安装百度的⼈⼯智能SDK:
⾸先咱们要 pip install baidu-aip 安装⼀个百度⼈⼯智能开放平台的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 环境变量配置:
⾸先你要解压缩,然后到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
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:
ad()python新手代码你好
# 识别本地⽂件
#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,
})
("result")[0])
如果err_no不是0的话,就参照⼀下错误码表
到此百度AI语⾳部分的调⽤就结束了,是不是感觉很简单
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论