2.10.81 • Published 8 months ago

@mt-utils/xunfei-tts v2.10.81

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

@mt-utils/xunfei-tts

讯飞TTS 文本转语音库,用于将文本转换为语音输出。

特点

  • 提供灵活的参数配置,包括语速、音量、音高等。
  • 支持使用默认参数或部分覆盖以简化配置流程。
  • 支持WebSocket通信,实现实时的文本到语音转换。
  • 支持Web Worker,进行音频数据的转换处理,不阻塞主线程。

安装

pnpm install @mt-utils/xunfei-tts

使用方法

引入库

import xunfeiTts from '@mt-utils/xunfei-tts'

配置系统参数

配置必要的系统参数,这些参数通常在讯飞开放平台申请

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

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

创建实例

您可以选择使用默认的 ttsOptions,或者提供部分参数来覆盖默认设置。

/**
 * 业务参数
 */
const ttsOptions = {
  // 音频编码方式
  // 'raw':未压缩的PCM音频格式
  // 'lame':MP3格式音频,需要配合sfl参数使用
  // 'speex-org-wb;7':标准开源speex宽频16k,数字代表压缩等级(1~10,默认8)
  // 'speex-org-nb;7':标准开源speex窄频8k,数字代表压缩等级(1~10,默认8)
  // 'speex;7':讯飞定制speex窄频8k,数字代表压缩等级(1~10,默认7)
  // 'speex-wb;7':讯飞定制speex宽频16k,数字代表压缩等级(1~10,默认7)
  aue: 'raw',

  // 是否开启流式返回,需要配合aue=lame使用
  // 1:开启流式返回
  sfl: 1,

  // 音频采样率
  // 'audio/L16;rate=8000':合成8KHz的音频
  // 'audio/L16;rate=16000':合成16KHz的音频
  // 若不传值,默认合成16KHz的音频
  auf: 'audio/L16;rate=16000',

  // 语速,取值范围[0-100],默认为50
  speed: 50,

  // 发音人选择,需要到控制台添加试用或购买发音人后使用
  vcn: 'xiaoyan', // 例如:'xiaoyan', 'xiaokun'

  // 音量,取值范围[0-100],默认为50
  volume: 50,

  // 音高,取值范围[0-100],默认为50
  pitch: 55,

  // 合成音频的背景音
  // 0:无背景音(默认值)
  // 1:有背景音
  bgs: 0,

  // 文本编码格式
  // 'GB2312', 'GBK', 'BIG5', 'UNICODE', 'GB18030', 'UTF8'(小语种)
  tte: 'UTF8',

  // 设置英文发音方式
  // 0:自动判断处理,如果不确定将按照英文词语拼写处理(缺省)
  // 1:所有英文按字母发音
  // 2:自动判断处理,如果不确定将按照字母朗读
  reg: '2',

  // 合成音频数字发音方式
  // 0:自动判断(默认值)
  // 1:完全数值
  // 2:完全字符串
  // 3:字符串优先
  rdn: '0'
}
// 创建mtTts实例
const ttsInstance = xunfeiTts.create(ttsOptions)

可用方法

发送文本并播放

ttsInstance.send(text: string, options?: Partial<TextSplitOriginal['options']>): void

send 方法现在接受两个参数:待转换的文本 text 和一个可选的 options 对象。options 对象的属性会与默认的 SendOptions 合并。

参数说明

  • text (string): 字符串 - 待转换的文本。

  • options (TextSplitOrigina['options']): 对象 - 发送文本时的配置选项,包括:

  • isAppend: 布尔值 - 是否主动将末尾未加入到此次段落分割中,默认值为 false。

npm.io

例子

/**
 * isAppend:false的情况
 * 在进行分割段落时,会分割为:["你好,"],剩余的文本内容“欢迎使用讯”会交给下次的send方法
 */
mtTts.send('你好,欢迎使用讯', {
  isAppend: false
})
/**
 * 首先拼接上次未完全分段的部分“欢迎使用讯”,然后再分割为本内容为["欢迎使用讯飞TTS服务!"]
 */
mtTts.send('飞TTS服务!')

// -----------------两种情况----------------

/**
 * isAppend:true的情况
 * 在进行分割段落时,会分割为:["你好,","剩余的文本内容"]
 */
mtTts.send('你好,欢迎使用讯', {
  isAppend: true
})
/**
 * 分割为本内容为["讯飞TTS服务!"]``
 */
mtTts.send('飞TTS服务!')

终止应用执行

ttsInstance.finish()

终止TTS转换、语音播放

例子

mtTts.finish()

应用钩子

应用钩子事件允许您在特定时刻执行自定义逻辑。

钩子名称触发时机描述
appCreate应用和所有的处理器被创建初始化时触发。可以在这个时候进行一些初始化操作,比如设置初始状态或者日志记录。
appStart第一个处理器进入运行状态时触发,即有一条源数据进入了第一个处理器。表示应用开始处理数据,可以在这里记录开始时间或者进行一些预处理。
appFinish应用被停止时触发。可以在这个时候进行清理操作,比如释放资源或者保存最终状态。
audioFirstStart音频首次播放时触发。可以在这里执行一些在音频播放开始前的准备工作,比如显示播放提示。

appCreate

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

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

appStart

第一个处理器进入运行状态,也就是有一条源数据进入了第一个处理器时触发。

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

appFinish

应用被停止时触发。

ttsInstance.on('appFinish', () => {
  console.log('应用已停止')
})

audioFirstStart

音频首次播放时触发。

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

配置选项

SystemConfig 配置选项

配置项类型描述必填默认值
API_SECRETstring在平台申请的API密钥
APPIDstring在平台申请的应用ID
API_KEYstring在平台申请的API_KEY信息

BusinessParams 配置选项

参数名类型必传描述示例值
auestring音频编码,可选值:- raw:未压缩的pcm- lame:mp3 (当aue=lame时需传参sfl=1)- speex-org-wb;7:标准开源speex(for speex_wideband,即16k)数字代表指定压缩等级(默认等级为8)- speex-org-nb;7:标准开源speex(for speex_narrowband,即8k)数字代表指定压缩等级(默认等级为8)- speex;7:压缩格式,压缩等级1~10,默认为7(8k讯飞定制speex)- speex-wb;7:压缩格式,压缩等级1~10,默认为7(16k讯飞定制speex)"raw"
sflint需要配合aue=lame使用,开启流式返回mp3格式音频取值:1 开启1
aufstring音频采样率,可选值:- audio/L16;rate=8000:合成8K 的音频- audio/L16;rate=16000:合成16K 的音频auf不传值:合成16K 的音频"audio/L16;rate=16000"
vcnstring发音人,可选值:请到控制台添加试用或购买发音人,添加后即显示发音人参数值"xiaoyan"
speedint语速,可选值:0-100,默认为5050
volumeint音量,可选值:0-100,默认为5050
pitchint音高,可选值:0-100,默认为5050
bgsint合成音频的背景音0:无背景音(默认值)1:有背景音0
ttestring文本编码格式- GB2312- GBK- BIG5- UNICODE(小语种必须使用UNICODE编码,合成的文本需使用utf16小端的编码方式,详见java示例demo)- GB18030- UTF8(小语种)"GBK"
regstring设置英文发音方式:0:自动判断处理,如果不确定将按照英文词语拼写处理(缺省)1:所有英文按字母发音2:自动判断处理,如果不确定将按照字母朗读"2"
rdnstring合成音频数字发音方式0:自动判断(默认值)1:完全数值2:完全字符串3:字符串优先"0"

SendOptions 配置项

配置项类型描述必填默认值
isAppendboolean是否将文本追加到文本分割器中,在进行文本分割的时,分割到最后的时候,是否将文本追加到文本分割器中false

讯飞文档

讯飞文档

注意

明途内部工具库,并不负责改BUG,请勿随便下载

2.10.71

10 months ago

2.10.72

9 months ago

2.10.73

9 months ago

2.10.1

11 months ago

2.10.75

9 months ago

2.10.76

9 months ago

2.10.0

11 months ago

2.10.78

8 months ago

2.0.7

11 months ago

2.10.79

8 months ago

2.0.6

12 months ago

2.0.9

11 months ago

2.10.7

10 months ago

2.10.80

8 months ago

2.10.81

8 months ago

2.10.6

10 months ago

2.0.3

1 year ago

2.0.5

1 year ago

2.0.1

1 year ago

1.0.10

1 year ago

1.0.12

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago