[英]RxJS run operation between each subscribe
我实现了一个有角度的管道,可以说出所传递的文本。
我基本上是用几个句子来做文字转语音。 用户需要能够在播放音频的同时看到句子……不是在音频播放完之后(我现在这样)。
给定一个可观察到的字符串,我该如何立即订阅每个字符串,然后播放音频直到完成,然后再继续其余字符串?
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)
})
}
}
我通过用这样的偏移量压缩解决了我的问题(其中f(a)
是文本a
的音频):
a, null
b, f(a)
c, f(b)
null, f(c)
该代码不是很漂亮,但是可以正常工作……从好的方面来说,现在语音转换不会阻止文本到语音API请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.