我已经实现了一个角度管道,可以说出通过的文字。
我基本上是用几句话做文字对话。用户需要能够在播放音频时看到句子...音频播放完毕后没有(我现在就是这样)。
给定一个Observable字符串,如何立即订阅每个字符串,然后播放音频直到完成,然后继续其余的字符串?
transform(input: Observable<string>, ...args) {
if (input) {
return input.concatMap(text => {
if (!text)
return Observable.empty()
let promise = Promise.resolve()
.then(() =>
this.service.textToSpeech(text)
)
.then((audio) =>
new Promise<string>((resolve) => {
player.play(audio)
player.addEventListener("ended", () => {
resolve(text) // The user sees the text when the audio stops..
})
})
)
return Observable.fromPromise(promise)
})
}
}
答案 0 :(得分:0)
我通过使用这样的偏移量解压缩我的问题(其中f(a)
是文本a
的音频):
a, null
b, f(a)
c, f(b)
null, f(c)
代码不是很漂亮,但它有效...... 从好的方面来说,现在文字转语音API请求不会被音频播放阻止。