更新记录
1.0.0(2025-06-30)
初版
平台兼容性
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
百度TTS模块使用说明
概述
本模块提供了百度文字转语音(TTS)服务的封装,支持将文本转换为语音并可选择上传到云存储。适用于uniCloud环境。
功能特性
- 获取百度TTS访问令牌
- 文本转语音合成
- 支持多种语音参数配置
- 支持云存储上传
- 基于文本内容生成唯一文件名
安装配置
前置条件
- 在百度智能云控制台创建语音技术应用
- 获取API_KEY和SECRET_KEY 获取地址
- 在x-config-center中配置百度TTS参数
配置示例
// x-config-center配置
{
"baiduTTS": {
"API_KEY": "your_api_key",
"SECRET_KEY": "your_secret_key"
}
}
API参考
getAccessToken(API_KEY, SECRET_KEY)
获取百度TTS访问令牌。
参数:
API_KEY
(string, 可选): 百度API密钥,不传则使用配置中心的值SECRET_KEY
(string, 可选): 百度密钥,不传则使用配置中心的值
返回值:
Promise<string>
: 访问令牌
示例:
const { getAccessToken } = require('x-tts');
try {
const token = await getAccessToken();
console.log('访问令牌:', token);
} catch (error) {
console.error('获取令牌失败:', error.message);
}
synthesizeTTS(text, accessToken, options)
将文本合成为语音。
参数:
text
(string): 要合成的文本内容accessToken
(string, 可选): 访问令牌,不传则自动获取options
(Object, 可选): 配置选项
options配置项:
uploadToCloud
(boolean): 是否上传到云存储,默认falsettsOptions
(Object): TTS参数配置
ttsOptions参数说明:
cuid
(string): 用户唯一标识,默认使用当前时间戳ctp
(number): 客户端类型,固定为1lan
(string): 语言类型,默认'zh'(中文)spd
(number): 语速,范围0-15,默认5pit
(number): 音调,范围0-15,默认5vol
(number): 音量,范围0-15,默认5per
(number): 发音人,默认0
发音人选项:
0
: 普通女声1
: 普通男声3
: 情感合成-度逍遥4
: 情感合成-度丫丫5003
: 精品男声
返回值:
{
accessToken: string, // 使用的访问令牌
audioBuffer: Buffer, // 音频数据缓冲区
fileID: string | null // 云存储文件ID(仅当uploadToCloud为true时)
}
使用示例
基础用法
const { synthesizeTTS } = require('x-tts');
async function basicExample() {
try {
const result = await synthesizeTTS('你好,欢迎使用百度TTS服务');
console.log('合成成功');
console.log('音频数据大小:', result.audioBuffer.length);
// 可以将audioBuffer保存为文件或进行其他处理
} catch (error) {
console.error('合成失败:', error.message);
}
}
自定义参数
async function customExample() {
try {
const result = await synthesizeTTS('这是一段测试文本', null, {
uploadToCloud: true,
ttsOptions: {
spd: 8, // 较快语速
pit: 6, // 稍高音调
vol: 10, // 较大音量
per: 1 // 男声
}
});
console.log('合成并上传成功');
console.log('云存储文件ID:', result.fileID);
} catch (error) {
console.error('操作失败:', error.message);
}
}
批量处理
async function batchExample() {
const texts = ['第一段文本', '第二段文本', '第三段文本'];
try {
// 先获取访问令牌,避免重复获取
const token = await getAccessToken();
const results = [];
for (const text of texts) {
const result = await synthesizeTTS(text, token, {
uploadToCloud: true,
ttsOptions: {
per: 0, // 女声
spd: 5 // 正常语速
}
});
results.push(result);
}
console.log('批量处理完成,生成了', results.length, '个音频文件');
} catch (error) {
console.error('批量处理失败:', error.message);
}
}
错误处理
常见错误及处理方式:
async function errorHandlingExample() {
try {
const result = await synthesizeTTS('测试文本');
} catch (error) {
if (error.message.includes('获取 access_token 失败')) {
console.error('认证失败,请检查API_KEY和SECRET_KEY配置');
} else if (error.message.includes('TTS 错误')) {
console.error('TTS服务错误:', error.message);
} else {
console.error('未知错误:', error.message);
}
}
}
注意事项
- 文本长度限制: 百度TTS单次请求文本长度不超过1024个字符
- 并发限制: 注意控制并发请求数量,避免超出API限制
- 访问令牌: 访问令牌有效期为30天,建议复用而非频繁获取
- 网络环境: 确保运行环境能够访问百度API服务
- 存储空间: 使用云存储上传时注意存储空间配额
依赖项
x-config-center
: 配置中心模块
如遇到问题,请检查:
- 网络连接是否正常
- API密钥配置是否正确
- 文本内容是否符合要求
- uniCloud环境是否配置正确