UNPKG

@minto-ai/huoshan-tts

Version:

借助“火山引擎在线语音合成API”实现浏览器端“文本转语音

87 lines (73 loc) 2.35 kB
import type { BusinessParams, SsmlConfig, SystemConfig } from './types' import { isIos } from '@minto-ai/tools' import TtsController from './tts-controller' import 'core-js' let systemConfig: SystemConfig const defaultSystemConfig: SystemConfig = { ttsRequestBaseUrl: 'wss://audio.workbrain.cn/tts', } const defaultBusinessParams: BusinessParams = { voice_type: 'zh_female_daimengchuanmei_moon_bigtts', text_type: 'plain', speed_ratio: 1, volume_ratio: 1, pitch_ratio: 1, language: 'cn', provider: '0', cache: false, stream: true, } const defaultSsmlConfig: SsmlConfig = { pronunciationRules: [], } if (isIos()) { Object.assign(defaultBusinessParams, { encoding: 'pcm', output_format: 'base64', }) } /** * 用于管理文本转语音的配置和创建实例 */ export default { /** * 配置系统参数。 * @param {Partial<SystemConfig>} [_systemConfig] - 系统配置参数。 * @returns {object} 返回当前对象,支持链式调用。 */ config(_systemConfig: Partial<SystemConfig>) { systemConfig = { ...defaultSystemConfig, ..._systemConfig, } return this }, /** * 创建文本转语音控制器实例。 * @param {Partial<BusinessParams>} [_businessParams] - 业务参数,默认为空对象。 * @param {Partial<SsmlConfig>} [_ssmlConfig] - SSML配置参数,默认为空对象。 * @returns {TtsController} 返回TtsController实例。s */ create(_businessParams: Partial<BusinessParams> = {}, _ssmlConfig: Partial<SsmlConfig> = {}): TtsController { const businessParams = { ...defaultBusinessParams, ..._businessParams, } const ssmlConfig = { ...defaultSsmlConfig, ..._ssmlConfig, } // 使用的是巴山大峡谷大模型,需要传递 output_format: 'url',获取mp3链接 if (isIos() && _businessParams.provider === '100') { Object.assign(businessParams, { encoding: 'mp3', output_format: 'url', }) } // 巴山大峡谷大模型不支持ssml,需要传递 text_type: 'plain' if (_businessParams.provider === '100') { businessParams.text_type = 'plain' } return new TtsController(systemConfig, businessParams, ssmlConfig) }, }