《npm包》 讯飞TTS文本转语音

@minto-ai/xunfei-tts 是一款强大的讯飞TTS文本转语音库,它能够高效、精准地将文本内容转换为语音输出,为开发者提供便捷、灵活的语音合成解决方案。

特点

  • 灵活参数配置:支持对语速、音量、音高等关键参数进行灵活调整,满足多样化的语音合成需求。
  • 简化配置流程:既可以使用默认参数快速启动,也能通过部分参数覆盖的方式,根据具体场景定制配置,极大简化了配置流程。
  • 实时语音转换 :借助WebSocket通信技术,实现文本到语音的实时转换,让语音输出与文本输入几乎同步,提升用户体验。
  • 非阻塞处理:支持Web Worker技术,能够在后台进行音频数据的转换处理,不会阻塞主线程,确保应用的流畅运行。

安装

使用 pnpm 进行安装,只需在终端中运行以下命令:

bash 复制代码
pnpm install @minto-ai/xunfei-tts

使用方法

引入库

在项目中引入 @minto-ai/xunfei-tts 库,示例代码如下:

javascript 复制代码
import xunfeiTts from '@minto-ai/xunfei-tts'

配置系统参数

在使用之前,需要配置必要的系统参数,这些参数可在讯飞开放平台申请获取。以下是配置示例:

javascript 复制代码
/**
 * 平台系统配置
 */
const systemConfig = {
  // 在平台申请的密钥信息
  API_SECRET: 'your_api_secret',
  // 在平台申请的APPID信息
  APPID: 'your_appid',
  // 在平台申请的API_KEY信息
  API_KEY: 'your_api_key'
}

// 配置系统参数
xunfeiTts.config(systemConfig)

创建实例

您可以选择使用默认的 ttsOptions,或者提供部分参数来覆盖默认设置。详细配置可参考讯飞TTS文档

javascript 复制代码
/**
 * 业务参数
 */
const ttsOptions = {
  aue: 'raw',
  sfl: 1,
  auf: 'audio/L16;rate=16000',
  speed: 50,
  vcn: 'xiaoyan',
  volume: 50,
  pitch: 55,
  bgs: 0,
  tte: 'UTF8',
  reg: '2',
  rdn: '0'
}

// 创建mtTts实例
const ttsInstance = xunfeiTts.create(ttsOptions)

可用方法

发送文本并播放

使用 send 方法将待转换的文本发送给语音合成系统并播放语音。

javascript 复制代码
ttsInstance.send('你好呀。', {
  isLastBatch: true
})
参数说明
  • text (string):需要转换为语音的文本内容。
  • options (Partial<SendOptions>):发送文本时的配置选项。
    • isLastBatch (boolean):指定当前文本是否为最后一批数据。

终止应用执行

使用 finish 方法终止TTS转换和语音播放操作。

javascript 复制代码
ttsInstance.finish()

应用钩子

应用钩子事件允许您在特定时刻执行自定义逻辑,增强应用的灵活性和可扩展性。

appCreate

当应用和所有的处理器被创建初始化时触发该事件。

javascript 复制代码
ttsInstance.on('appCreate', () => {
  console.log('应用和处理器已创建初始化')
})

appActive

当应用被激活时触发该事件。

javascript 复制代码
ttsInstance.on('appActive', () => {
  console.log('应用已激活')
})

appStart

当第一个处理器进入运行状态,即有一条源数据进入第一个处理器时触发该事件。

javascript 复制代码
ttsInstance.on('appStart', () => {
  console.log('第一个处理器进入运行状态')
})

audioFirstStart

当音频首次播放时触发该事件。

javascript 复制代码
ttsInstance.on('audioFirstStart', () => {
  console.log('音频首次播放')
})

appFinish

当应用被停止时触发该事件。

javascript 复制代码
ttsInstance.on('appFinish', () => {
  console.log('应用已停止')
})

例子

javascript 复制代码
import xunfeiTts from '@minto-ai/xunfei-tts'

xunfeiTts.config({
  APPID: '****',
  API_SECRET: '****',
  API_KEY: '****',
})

const ttsInstance = xunfeiTts.create({
  aue: 'raw',
  sfl: 1,
  auf: 'audio/L16;rate=16000',
  vcn: 'x4_lingxiaoying_em_v2',
  speed: 60,
  volume: 50,
  pitch: 55,
  bgs: 0,
  tte: 'UTF8',
  reg: '2',
  rdn: '0',
})

ttsInstance
  .on('appActive', () => {
    console.log('appActive')
  })
  .on('appFinish', () => {
    console.log('appFinish')
  })
  .on('appStart', () => {
    console.log('appStart')
  })
  .on('audioFirstStart', () => {
    console.log('audioFirstStart')
  })

const zzButton = document.createElement('button')
zzButton.textContent = '终止'
const jxButton = document.createElement('button')
jxButton.textContent = '继续'

jxButton.onclick = () => {
  ttsInstance.finish()
}

jxButton.onclick = () => {
  const arrText = [
    `你要抱`,
    `抱我吗?`,
    `我好`,
    `喜欢你呀!`,
  ]

  arrText.forEach((item, index) => {
    setTimeout(() => {
      ttsInstance.send(item, {
        isLastBatch: index === arrText.length - 1,
      })
    }, index * 100)
  })
}

document.body.appendChild(jxButton)
document.body.appendChild(zzButton)
相关推荐
崔庆才丨静觅9 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606110 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了10 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅10 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅11 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅11 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment11 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅11 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊11 小时前
jwt介绍
前端
爱敲代码的小鱼11 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax