UNPKG

@minto-ai/huoshan-tts

Version:

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

43 lines (34 loc) 1.22 kB
import type { ParallelTaskExecuteContext } from '../../handler' import { ParallelHandler } from '../../handler' class DecodeData extends ParallelHandler<Blob, AudioBuffer> { private audioContext: AudioContext = new AudioContext() public execute( context: ParallelTaskExecuteContext<Blob, AudioBuffer>, ): void { if (context.isLastExecute) { this.taskCompletedCallback(context.taskItem.uuid) return } const reader = new FileReader() reader.readAsArrayBuffer(new Blob([context.taskItem.original!])) reader.onload = (event) => { const arrayBuffer = event.target?.result as ArrayBuffer if (!arrayBuffer) { this.taskCompletedCallback(context.taskItem.uuid) return } this.audioContext.decodeAudioData(arrayBuffer, (audioBuffer) => { this.forwardToHandler(audioBuffer) this.taskCompletedCallback(context.taskItem.uuid) }) } } protected onFinish(): void { if (this.audioContext) { this.audioContext.suspend() this.audioContext = new AudioContext() } this.executeController?.$bus.emit('_decodeDataFinish') } } export default DecodeData