System.speech请不要说区号

use*_*326 6 c# text-to-speech

我使用简单的c#代码让程序说话

        if (checkBox1.Checked == true) {
            SpeechSynthesizer speaker = new SpeechSynthesizer();
            speaker.Rate = 1;
            speaker.Volume = 100;
            speaker.Speak(stringout);
Run Code Online (Sandbox Code Playgroud)

问题是字符串输出包含带数字的句子.并且微软语言将这些识别为"区号",例如,而不是说

样本90 123 40

我听到:

样本区号 90 123 40

如何阻止这种行为?

hca*_*ver 1

尝试这个:

\n\n
speaker.SpeakSsml("sample <say-as interpret-as=\\"string\\" format=\\\xe2\x80\x9ddigit string\\\xe2\x80\x9d detail=\\\xe2\x80\x9dstring\\\xe2\x80\x9d>90 123 40<say-as>");\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果有效,请对字符串进行正则表达式替换以将数字包装在该字符串中。

\n