C# 无法使用SpeechSynthesizer选择语音。SelectVoice()方法

C# 无法使用SpeechSynthesizer选择语音。SelectVoice()方法,c#,select,voice,speech,synthesis,C#,Select,Voice,Speech,Synthesis,我正在尝试制作一个文本到语音的应用程序,在这个应用程序中,我可以通过一个组合框选择语音,并用该语音读出一些文本 我使用以下命令获取可用语音的名称以填充组合框: private List<String> getInstalledVoices() { var installedVoices = new List<String>(); using (SpeechSynthesizer synth = new SpeechSynt

我正在尝试制作一个文本到语音的应用程序,在这个应用程序中,我可以通过一个组合框选择语音,并用该语音读出一些文本

我使用以下命令获取可用语音的名称以填充组合框:

    private List<String> getInstalledVoices()
    {
        var installedVoices = new List<String>();

        using (SpeechSynthesizer synth = new SpeechSynthesizer())
        {
            foreach (InstalledVoice voice in synth.GetInstalledVoices())
            {
                installedVoices.Add(voice.VoiceInfo.Name);
            }
        }
        return installedVoices;
    }
我做错了什么

安装的声音- 名称:Microsoft Hazel桌面 文化:欧洲国家标准 年龄:成人 性别:女 说明:Microsoft Hazel桌面-英语(英国) ID:TTS\U MS\U EN-GB\U HAZEL\U 11.0 已启用:True 找不到支持的音频格式 附加信息-年龄:成人 性别:女 语文:809 名称:Microsoft Hazel桌面 共享声明: SpLexicon:{0655E396-25D0-11D3-9C26-00C04F8EF87C} 供应商:微软 版本:11.0

名称:eSpeak en+f2 文化:美国 年龄:成人 性别:男 说明:eSpeak EN+F2 ID:eSpeak_1 已启用:True 找不到支持的音频格式 其他信息-名称:eSpeak en+f2 性别:男 年龄:成人 语文:409 供应商:

姓名:eSpeak en us 文化:美国 年龄:成人 性别:男 描述:美国埃斯皮克 ID:eSpeak_2 已启用:True 找不到支持的音频格式 其他信息-名称:eSpeak en us 性别:男 年龄:成人 语文:409 供应商:

姓名:eSpeak en 文化:美国 年龄:成人 性别:男 描述:eSpeak EN ID:eSpeak 已启用:True 找不到支持的音频格式 其他信息-名称:eSpeak en 性别:男 年龄:成人 语文:409 供应商:

名称:Microsoft David Desktop 文化:美国 年龄:成人 性别:男 说明:Microsoft David Desktop-英语(美国) ID:TTS_MS_EN-US_DAVID_11.0 已启用:True 找不到支持的音频格式 附加信息-年龄:成人 性别:男 语文:409 名称:Microsoft David Desktop 共享声明: SpLexicon:{0655E396-25D0-11D3-9C26-00C04F8EF87C} 供应商:微软 版本:11.0

名称:Microsoft Zira桌面 文化:美国 年龄:成人 性别:女 说明:Microsoft Zira桌面-英语(美国) ID:TTS_MS_EN-US_ZIRA_11.0 已启用:True 找不到支持的音频格式 附加信息-年龄:成人 性别:女 语文:409 名称:Microsoft Zira桌面 共享声明: 供应商:微软 版本:11.0

姓名:大众朱莉 文化:美国 年龄:成人 性别:女 描述:大众朱莉 ID:VW Julie 已启用:True 找不到支持的音频格式 附加信息-年龄:成人 性别:女 语文:409;9 供应商:语音软件
姓名:VW Julie

拥有多个可用语音是非常不寻常的,操作系统只提供一个。通过描述你看到的其他产品以及你在哪里购买的产品来获得成功。@HansPassant我已经更新了我的帖子。(我可以在第三方TTS应用程序中使用这些其他语音)
    private void speak(String toSpeak)
    {
        SpeechSynthesizer synth = new SpeechSynthesizer();
        synth.SelectVoice(voiceSelectionBox.SelectedItem.ToString());
        PromptBuilder promptBuilder = new PromptBuilder();
        promptBuilder.AppendText(toSpeak);
        synth.SpeakAsync(promptBuilder);            
    }