Làm thế nào để thực sự nói sự im lặng cho X # của mili giây và không phải bằng cách sử dụng Thread.Sleep(). Tôi đang cố gắng sử dụng hàm .Speak() trong thư viện SpeechLib của biến SpVoice để nói một khoảng thời gian im lặng cụ thể theo một số mili giây được chỉ định. Đặc biệt, ở đầu ra của một tệp .wav trong đó tôi chèn khoảng thời gian im lặng giữa các dòng văn bản được nói. Sử dụng Thread.Sleep() sẽ mất một lượng thời gian khiêu dâm để nói hoặc lưu, vì tôi đang lên kế hoạch lưu gần 5000 dòng văn bản nói thành .wav với tạm dừng ở giữa các dòng.Làm thế nào để nói mili giây im lặng trong C# bằng cách sử dụng SpVoice?
Đây là giải pháp tôi có cho đến nay:
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]);
}
đâu 22.050,0 là tỷ lệ mẫu và pauseLineBreak.Value là # mili giây. Hệ số 2.0 là cho độ dài 2 byte của một đoạn ngắn trong dữ liệu .wav.
AudioOutputStream.Write chỉ cần viết đúng số 00 vào tệp để tắt tiếng.
Sự cố khi viết 0 là gì? –