0%

百度 AI 的基本用法

百度 AI 有很多有趣的功能,在爬虫过程中或许会用到。比如,我们常用的基于百度AI实现的爬虫功能有:

  • 图像识别
  • 语音识别&合成
  • 自然语言处理

百度 AI 的通用使用流程:

  • 点击控制台进行登录
  • 选择想要实现的功能
  • 实现功能下创建一个 app
  • 选择对应的 Python SDK 文档进行代码实现

接下来,我将以百度 AI 的语音合成功能为例,介绍一下百度 AI 的基本用法。百度 AI 的其他功能的使用方法完全类似。

首先,打开百度 AI 的控制台,可能需要登陆。网址为:https://console.bce.baidu.com/

找到我们需要的功能,点进去,比如语音技术:

若没有应用,点击 创建应用,若已有应用,也可点击 管理应用

然后填上应用名和描述,选择自己需要用到的功能即可。

创建好应用后,即可查看应用的各种信息:

点击 查看文档 即可查看每种功能的具体用法。我们要用的功能是语音合成,要使用的是在线语音合成,要查看的是 Python SDK。

需要注意的是,语音合成长度不能太长,不可以超过 512 字:

然后就是按照官方文档的要求,一步一步走下来。

首先安装 baidu-aip 模块:

1
pip install baidu-aip

然后实例化一个 AipSpeech 对象,这些数据都很容易找到:

1
2
3
4
5
6
7
8
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)

然后调用语音合成方法 synthesis,把参数传进去即可:

1
2
3
4
5
6
7
8
result  = client.synthesis('你好百度', 'zh', 1, {
'vol': 5,
})

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

参数解释:

参数 类型 描述 是否必须
tex String 合成的文本,使用UTF-8编码, 请注意文本长度必须小于1024字节
cuid String 用户唯一标识,用来区分用户, 填写机器 MAC 地址或 IMEI 码,长度为60以内
spd String 语速,取值0-9,默认为5中语速
pit String 音调,取值0-9,默认为5中语调
vol String 音量,取值0-15,默认为5中音量
per String 发音人选择, 0为女声,1为男声, 3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女

示例:将段子王的笑话爬取下来,并转换成语音

段子王 url:https://duanziwang.com/category/%E7%BB%8F%E5%85%B8%E6%AE%B5%E5%AD%90

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import os
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '19055069'
API_KEY = 'e6VYNB4tyUU4GH9qWsfQwlvD'
SECRET_KEY = 'F03R86gmufCwvRkM8LZMfftTZaAikRTg'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

audio_dir = 'DuanziwangAud'
if not os.path.exists(audio_dir):
os.mkdir(audio_dir)
for page in range(1, 11):
url = f'https://duanziwang.com/category/%E7%BB%8F%E5%85%B8%E6%AE%B5%E5%AD%90/{page}/'
response = requests.get(url=url, headers=headers)
page_text = response.text
soup = BeautifulSoup(page_text, 'lxml')
article_list = soup.findAll('article', class_='post')
for article in article_list:
title = os.path.join(audio_dir, article.h1.text + '.mp3')
content = article.p.text
result = client.synthesis(content, 'zh', 1, {
'vol': 5,
})

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