更新记录

1.0.0(2025-06-30)

初版


平台兼容性

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


百度TTS模块使用说明

概述

本模块提供了百度文字转语音(TTS)服务的封装,支持将文本转换为语音并可选择上传到云存储。适用于uniCloud环境。

功能特性

  • 获取百度TTS访问令牌
  • 文本转语音合成
  • 支持多种语音参数配置
  • 支持云存储上传
  • 基于文本内容生成唯一文件名

安装配置

前置条件

  1. 在百度智能云控制台创建语音技术应用
  2. 获取API_KEY和SECRET_KEY 获取地址
  3. 在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): 是否上传到云存储,默认false
  • ttsOptions (Object): TTS参数配置

ttsOptions参数说明:

  • cuid (string): 用户唯一标识,默认使用当前时间戳
  • ctp (number): 客户端类型,固定为1
  • lan (string): 语言类型,默认'zh'(中文)
  • spd (number): 语速,范围0-15,默认5
  • pit (number): 音调,范围0-15,默认5
  • vol (number): 音量,范围0-15,默认5
  • per (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);
    }
  }
}

注意事项

  1. 文本长度限制: 百度TTS单次请求文本长度不超过1024个字符
  2. 并发限制: 注意控制并发请求数量,避免超出API限制
  3. 访问令牌: 访问令牌有效期为30天,建议复用而非频繁获取
  4. 网络环境: 确保运行环境能够访问百度API服务
  5. 存储空间: 使用云存储上传时注意存储空间配额

依赖项

  • x-config-center: 配置中心模块

如遇到问题,请检查:

  1. 网络连接是否正常
  2. API密钥配置是否正确
  3. 文本内容是否符合要求
  4. uniCloud环境是否配置正确

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问