有没有办法从谷歌 TTS 输出中删除填充?



我正在使用Google.Cloud.TextToSpeech.V1并使用TextToSpeechClient.SynthesizeSpeech((生成一些基本ssml的Mp3。但是,结果总是在文件开头返回大约 50 毫秒的填充静音,在文件结束时返回 200 毫秒的填充静音。

有没有办法防止添加此填充,因为我需要让这些 mp3 作为拼接在一起的句子播放,并且填充会增加不必要的停顿。

需要明确的是,我正在使用的ssml示例:

<speak>Hello</speak>

我不是在添加我自己的任何休息或停顿。

我没有在谷歌 TTS API 中找到解决方案,但我找到了 2 种解决方法

1( Javascript

由于我在JS中播放声音,所以我只是在像这样播放之前定位播放时间

var au=new Audio(url);
au.preload=true;
au.currentTime=0.15;

然后附加事件处理程序以更新播放时间事件:

function stopp(e){
if (e.target.currentTime >= e.target.duration-0.3) {
e.target.pause();
e.target.removeEventListener('timeupdate',stopp);
}
}
au.addEventListener('timeupdate',stopp, false)

所以声音在结束前弯腰

2( 使用 SOX 预处理

SOX(Sound eXchange,音频操纵的瑞士军刀( 可以从MP3文件中切断静音。然而,如果疯了,最后会削减。你需要 反转文件,剪切开头,再次反转。我实际上没有找到 任何可以在文件末尾轻松剪切静音的实用程序。

您现在找到更好的解决方案了吗?

最新更新