gpt4 book ai didi

c# - SoundEffect 在从 SpeechLib 分配缓冲区时引发错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:58 24 4
gpt4 key购买 nike

我正在开发 Windows Phone 7 应用程序,它可以读取一些文本并朗读文本。

micsoroft 库 - interop.speechlib.dll 将我的文本转换为缓冲区(字节数组)。 Windows Phone 7 的 SoundEffect 插件会说话。

一切正常,但有时会引发以下错误,从而产生问题-

缓冲区无效。确保缓冲区长度不为零且满足音频格式的 block 对齐要求

发言代码如下:

SoundEffect se = new SoundEffect(buffer, 15000, AudioChannels.Stereo);
FrameworkDispatcher.Update();
se.Play();

请告诉我,我哪里做错了。

编辑从一些测试中我得出结论,问题的根本原因是缓冲区的生成。下面是从文本生成缓冲区的代码。

 using (MemoryStream ms = new MemoryStream())
{

SpeechLib.SpVoice oVoice = new SpeechLib.SpVoice();
SpeechLib.SpFileStream cpFileStream = new SpeechLib.SpFileStream();
cpFileStream.Open(filename, SpeechLib.SpeechStreamFileMode.SSFMCreateForWrite, false);
oVoice.AudioOutputStream = cpFileStream;
oVoice.Speak(value, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault);
oVoice = null;
cpFileStream.Close();
cpFileStream = null;

byte[] ImageData=File.ReadAllBytes(filename);
return ImageData;
}

谢谢,纳雷什戈拉达拉

最佳答案

经过一些测试,它可以通过设置 channel 模式来工作。它通过将 channel 模式设置为单声道来工作。

SoundEffect se = new SoundEffect(buffer, 30000, AudioChannels.Mono);

mono vs stereo 查看它们之间的区别

关于c# - SoundEffect 在从 SpeechLib 分配缓冲区时引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949451/

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