gexgd0419 / NaturalVoiceSAPIAdapter

Make Azure natural TTS voices accessible to any SAPI 5-compatible application.
MIT License
52 stars 4 forks source link

能否提高离线讲述人自然语音的响应速度 #1

Open anmi2004 opened 1 month ago

anmi2004 commented 1 month ago

开发者您好,我使用的是nvda屏幕阅读器。在使用自然语音朗读时,有点儿不太跟手,也就是说当我按下按键到它发出声音有短暂的延迟,这个延迟在打字之类的场景的时候,影响最大。不知道能否进行优化,再次提升一些响应速度。

gexgd0419 commented 1 month ago

我用程序测试了一下,几种不同情况下,从按下键盘按键到读屏软件输出音频的延迟。

其中,NVDA 版本为 2024.1,系统为 Win 11 23H2,所有语音都调整到了最大速度。

测试方法是输入A到Z的字母,然后取每次延迟的平均值。

延迟的计算方法是,使用程序监测键盘和回录系统声音,记录键盘按下的时间点、音频数据变为非零的时间点(即输出音频延迟)、音频数据大于0.0001的时间点(即音频可听见延迟)。

读屏软件 语音 输出音频延迟 音频可听见延迟
NVDA eSpeak NG 17毫秒 68毫秒
NVDA Huihui (OneCore) 19毫秒 90毫秒
NVDA Huihui (SAPI) 87毫秒 154毫秒
NVDA Xiaoxiao (本引擎) 124毫秒 163毫秒
讲述人 Huihui (OneCore) 21毫秒 66毫秒
讲述人 Huihui (SAPI) 66毫秒 118毫秒
讲述人 Xiaoxiao (内置功能) 58毫秒 110毫秒
讲述人 Xiaoxiao (本引擎) 113毫秒 152毫秒

看来这个引擎的确是延迟最大的。

我又测试了直接作为 SAPI 客户端调用 Speak 函数的延迟。

步骤 与上一步骤间的延迟
客户端发起调用 -
引擎接收到调用 47毫秒
引擎接收到自然语音数据 9毫秒
输出音频 27毫秒
音频可听见 37毫秒
总延迟 122毫秒

其中,从客户端调用请求 SAPI 合成语音,到引擎接收到来自客户端程序的请求,SAPI 5 系统自己就带来了四十多毫秒的延迟。对这一部分的延迟,我可能是没什么办法的。

而如果去除这四十多毫秒的延迟,延迟的水平就和讲述人内置的自然语音功能差不多了。同时从数据也可以看出,SAPI 版的 Huihui 语音也比 OneCore 版的 Huihui 多出五十毫秒左右的延迟。

(提示:Huihui Desktop 是 SAPI 语音,不带 Desktop 的 Huihui 是 OneCore 语音)