xunfei-tts
Version:
借助“讯飞在线语音合成API”实现浏览器端“文本转语音
35 lines (27 loc) • 1.05 kB
text/typescript
import type { ParallelTaskExecuteContext } from '../handler'
import { ParallelHandler } from '../handler'
class DecodeData extends ParallelHandler<Array<number>, AudioBuffer> {
private audioContext: AudioContext = new AudioContext()
public execute(
context: ParallelTaskExecuteContext<Array<number>, AudioBuffer>,
): void {
if (context.isLastExecute) {
this.taskCompletedCallback(context.taskItem.uuid)
return
}
const audioBuffer = this.audioContext.createBuffer(1, context.taskItem.original!.length, 22050)
if (audioBuffer.copyToChannel) {
audioBuffer.copyToChannel(new Float32Array(context.taskItem.original! as any), 0, 0)
}
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