@mingto/huoshan-mp-tts
v1.0.46
Published
借助“火山引擎在线语音合成API”实现微信小程序端“文本转语音
Readme
@mingto/huoshan-tts-mp
微信小程序端火山引擎 TTS 控制器,内置流式文本切分与 SSML 转换。
特性
- ✅ 小程序适配:专为微信小程序环境优化
- ✅ 流式处理:支持流式文本推送
- ✅ SSML 转换:内置 SSML 发音规则转换
- ✅ 事件驱动:丰富的事件订阅机制
- ✅ 轻量高效:专为移动端优化
安装
pnpm add @mingto/huoshan-tts-mp快速开始
import huoshanTts from '@mingto/huoshan-tts-mp'
// 初始化配置
huoshanTts.config()
// 创建应用实例
const ttsInstance = huoshanTts.create({
// 音色
voice_type: 'zh_female_daimengchuanmei_moon_bigtts'
})
// 订阅事件
ttsInstance.on('audioFirstStart', () => {
console.log('音频首次播放')
})
ttsInstance.on('appError', (error) => {
console.error('应用错误', error)
})
ttsInstance.on('appFinish', () => {
console.log('应用已销毁')
})
// 激活应用
ttsInstance.start()
// 发送文本
ttsInstance.send('你好呀。')
// 结束应用(通知发送结束,但继续播放剩余音频)
ttsInstance.end()
// 销毁应用(停止播放)
ttsInstance.finish()API
初始化
huoshanTts.config()
初始化配置系统。
huoshanTts.config()创建实例
huoshanTts.create(businessParams?)
创建并返回 TTS 应用实例。
const ttsInstance = huoshanTts.create({
voice_type: 'zh_female_daimengchuanmei_moon_bigtts',
speed_ratio: 1.0,
volume_ratio: 1.0,
pitch_ratio: 1.0,
})实例方法
ttsInstance.start()
激活应用,准备接收文本进行语音播放。
ttsInstance.start()ttsInstance.send(text)
发送文本进行语音合成。
ttsInstance.send('你好呀。')ttsInstance.end()
通知应用发送文本已经结束,但是不会销毁应用,剩余的文本将会继续播放。
ttsInstance.end()ttsInstance.finish()
应用播放结束,应用将会被销毁,剩余的文本将会停止播放。
ttsInstance.finish()ttsInstance.on(eventName, callback)
订阅应用事件,获取播放开始、错误、结束等通知。
ttsInstance.on('audioFirstStart', () => {
console.log('音频首次播放')
})配置参数
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| voice_type | string | - | 音色类型 |
| text_type | 'plain' | 'ssml' | 'plain' | 文本类型 |
| speed_ratio | number | 1 | 语速,约 [0.2, 3] |
| volume_ratio | number | 1 | 音量,约 [0.1, 3] |
| pitch_ratio | number | 1 | 音高,约 [0.1, 3] |
| stream | boolean | true | 是否流式返回 |
| language | string | 'cn' | 语言代码 |
应用钩子
| 事件名 | 说明 |
|--------|------|
| audioFirstStart | 音频首次播放时触发 |
| appError | 应用发生错误时触发 |
| appFinish | 应用结束或销毁时触发 |
使用示例
ttsInstance.on('audioFirstStart', () => {
console.log('音频首次播放')
})
ttsInstance.on('appError', (error) => {
console.error('应用错误', error)
})
ttsInstance.on('appFinish', () => {
console.log('应用已销毁')
})Vue 组件示例
<script setup lang="ts">
import { onUnmounted } from 'vue'
import huoshanTts from '@mingto/huoshan-tts-mp'
huoshanTts.config()
let ttsInstance = null
let timer = null
const handleStart = () => {
clearTimeout(timer)
ttsInstance = huoshanTts.create({
voice_type: 'zh_female_daimengchuanmei_moon_bigtts'
})
ttsInstance
.on('appFinish', () => {
console.log('appFinish')
})
.on('appError', (error) => {
console.error('应用错误', error)
})
.on('audioFirstStart', () => {
console.log('audioFirstStart')
})
const arrText = ['你要抱', '抱我吗?', '我好', '喜欢你呀!']
let index = 0
ttsInstance.start()
timer = setInterval(() => {
ttsInstance.send(arrText[index])
index += 1
if (index === arrText.length) {
ttsInstance.end()
clearInterval(timer)
}
}, 100)
}
const handleFinish = () => {
if (ttsInstance) {
ttsInstance.finish()
}
clearTimeout(timer)
}
onUnmounted(() => {
handleFinish()
})
</script>
<template>
<view class="content">
<button @click="handleStart">开启</button>
<button @click="handleFinish">结束</button>
</view>
</template>参考文档
详细配置可参考 火山引擎参数基本说明
许可证
MIT
