@minto-ai/huoshan-tts
Version:
借助“火山引擎在线语音合成API”实现浏览器端“文本转语音
45 lines (39 loc) • 1.3 kB
text/typescript
import type { SerialTaskExecuteContext } from '../handler'
import type { SsmlConfig } from '../types'
import type { SsmlConverter } from '../utils'
import { SerialHandler } from '../handler'
import { createSsmlConverter } from '../utils'
class CreateSsml extends SerialHandler<string, string> {
private ssmlConverter!: SsmlConverter
/**
* 初始化属性
* @param ssmlConfig SSML 配置(包含发音规则)
*/
public initProperty(ssmlConfig: SsmlConfig): void {
this.ssmlConverter = createSsmlConverter(ssmlConfig.pronunciationRules ?? [])
}
/**
* 执行处理,将当前文本转换为 SSML 并传递到下一个处理器
* @param context 串行任务上下文
*/
public execute(
context: SerialTaskExecuteContext<string, string>,
): void {
if (context.isLastExecute) {
this.taskCompletedCallback()
}
else {
this.ssmlConverter.convertParagraphs([context.taskItem.original!]).forEach((paragraph) => {
this.forwardToHandler(paragraph)
})
this.taskCompletedCallback()
}
}
/**
* 完成回调,广播文本切割结束事件
*/
protected onFinish(): void {
this.executeController?.$bus.emit('_createSsmlFinish')
}
}
export default CreateSsml