gpt4 book ai didi

c# - 如何使用 SpVoice 在 C# 中说几毫秒的静音?

转载 作者:可可西里 更新时间:2023-11-01 07:48:28 25 4
gpt4 key购买 nike

如何不使用 Thread.Sleep() 而真正静音 X # 毫秒。我正在尝试使用 SpVoice 变量的 SpeechLib 库中的 .Speak() 函数根据指定的毫秒数说出特定的静音持续时间。特别是,在 .wav 文件的输出中,我在文本的口语行之间插入了静默期。使用 Thread.Sleep() 将花费大量时间来说话或保存,因为我计划将近 5000 行语音文本保存为 .wav,并在行与行之间暂停。

这是我目前的解决方案:

        int pauseA = (int)(22050.0 * ((double)pauseTargetToSource.Value / 1000.0) * 2.0);
int pauseB = (int)(22050.0 * ((double)pauseLineBreak.Value / 1000.0) * 2.0);
while (
(lineSource = srSource.ReadLine()) != null &&
(lineTarget = srTarget.ReadLine()) != null)
{
voiceSource.Speak(lineSource, SpeechVoiceSpeakFlags.SVSFlagsAsync);
voiceSource.WaitUntilDone(Timeout.Infinite);
voiceSource.AudioOutputStream.Write(new byte[pauseA]);
voiceTarget.Speak(lineTarget, SpeechVoiceSpeakFlags.SVSFlagsAsync);
voiceTarget.WaitUntilDone(Timeout.Infinite);
voiceSource.AudioOutputStream.Write(new byte[pauseB]);
}

其中 22050.0 是采样率,pauseLineBreak.Value 是毫秒数。乘数 2.0 用于 .wav 数据中 short 的 2 字节长度。

AudioOutputStream.Write 只是将正确的 00 写入文件以静音。

最佳答案

这不是一个理想的解决方案,但是......

您可以在检查持续多少毫秒后使用一定数量的“静音”音素,即“_”(带下划线)(请参阅 http://msdn.microsoft.com/en-us/library/ms717239(v=vs.85).aspx)。您可能需要根据您设置的速率调整静音次数。

关于c# - 如何使用 SpVoice 在 C# 中说几毫秒的静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com