逐个再现base64编码音频的列表



我有一个Base64编码的音频数组,我正在尝试逐一复制。问题是所有要素都在同时复制。以下是我的代码。

您可以下载audios.json

async sayChunks() {
const ttsResponses = await this.getTestJson();
console.log("ttsResponses:", ttsResponses);
for (const ttsResponse of ttsResponses) 
{
console.log("playing audio chunk");
const encodedAudio = ttsResponse.base64Audio.replace(/['"]+/g, '')
await this.playAudio(encodedAudio);
console.log("stopped playing audio chunk");
}
}
async playAudio(encodedAudio: string) {
return new Promise<void>((resolve) => {
const audio = new Audio("data:audio/wav;base64," + encodedAudio);
audio.onended = () => resolve();
audio.play();
})
}

当编写返回Promiseasync函数时,返回时必须awaitPromise。或者,您可以直接返回Promise,而不制作函数async

任一:

async playAudio(encodedAudio: string) {
return await new Promise<void>((resolve) => {
const audio = new Audio("data:audio/wav;base64," + encodedAudio);
audio.onended = () => resolve();
audio.play();
})
}

或者简单地说:

playAudio(encodedAudio: string) {
return new Promise<void>((resolve) => {
const audio = new Audio("data:audio/wav;base64," + encodedAudio);
audio.onended = () => resolve();
audio.play();
})
}

最新更新