gpt4 book ai didi

c# - 问题 SpeechSynthesizer.SetOutputToAudioStream 音频格式问题

转载 作者:太空狗 更新时间:2023-10-29 23:19:45 28 4
gpt4 key购买 nike

我目前正在开发一个需要传输编码为特定音频格式的语音的应用程序。

System.Speech.AudioFormat.SpeechAudioFormatInfo synthFormat = 
new System.Speech.AudioFormat.SpeechAudioFormatInfo(System.Speech.AudioFormat.EncodingFormat.Pcm,
8000, 16, 1, 16000, 2, null);

这表明音频采用 PCM 格式,每秒 8000 个样本,每个样本 16 位,单声道,平均每秒 16000 个字节, block 对齐为 2。

当我尝试执行以下代码时,没有任何内容写入我的 MemoryStream 实例;但是,当我从每秒 8000 个样本更改为高达 11025 个时,音频数据已成功写入。

SpeechSynthesizer synthesizer = new SpeechSynthesizer(); 
waveStream = new MemoryStream();

PromptBuilder pbuilder = new PromptBuilder();
PromptStyle pStyle = new PromptStyle();

pStyle.Emphasis = PromptEmphasis.None;
pStyle.Rate = PromptRate.Fast;
pStyle.Volume = PromptVolume.ExtraLoud;

pbuilder.StartStyle(pStyle);
pbuilder.StartParagraph();
pbuilder.StartVoice(VoiceGender.Male, VoiceAge.Teen, 2);
pbuilder.StartSentence();
pbuilder.AppendText("This is some text.");
pbuilder.EndSentence();
pbuilder.EndVoice();
pbuilder.EndParagraph();
pbuilder.EndStyle();

synthesizer.SetOutputToAudioStream(waveStream, synthFormat);
synthesizer.Speak(pbuilder);
synthesizer.SetOutputToNull();

使用 8000 的采样率时没有记录异常或错误,我在文档中找不到任何有用的关于 SetOutputToAudioStream 的信息以及为什么它以每秒 11025 个样本而不是 8000 的速度成功。我有一个涉及 wav 的解决方法我使用一些声音编辑工具生成并转换为正确采样率的文件,但如果可以的话,我想从应用程序中生成音频。

一个特别有趣的地方是 SpeechRecognitionEngine 接受该音频格式并成功识别我的合成波形文件中的语音...

更新:最近发现这种音频格式对某些已安装的语音成功,但对其他人失败。它专门针对 LH Michael 和 LH Michelle 失败,并且失败因 PromptBuilder 中定义的某些语音设置而异。

最佳答案

LH Michael 和 LH Michelle 的声音完全有可能不支持 8000 Hz 的采样率(因为它们本身会生成 > 8000 Hz 的样本)。 SAPI 允许引擎拒绝不受支持的速率。

关于c# - 问题 SpeechSynthesizer.SetOutputToAudioStream 音频格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/254930/

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