Вопрос SpeechSynthesizer.SetOutputToAudioStream: проблема с аудиоформатом

В настоящее время я работаю над приложением, которое требует передачи речи, закодированной в определенный аудиоформат.

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 средних байтов в секунду, выравнивание блоков 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.

Ответы на вопрос(3)

Ваш ответ на вопрос