Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SAPI有没有办法听写中文名字并获得拼音或只记录发音的单词?_C#_Text To Speech_Sapi - Fatal编程技术网

C# 使用SAPI有没有办法听写中文名字并获得拼音或只记录发音的单词?

C# 使用SAPI有没有办法听写中文名字并获得拼音或只记录发音的单词?,c#,text-to-speech,sapi,C#,Text To Speech,Sapi,目标是使用SAPI口述中文名字,并获得拼音或相同发音的单词来记录名字的发音。但是当使用下面这样的听写语法时 var engine = new SpeechRecognitionEngine(CultureInfo.CurrentCulture); engine.SetInputToDefaultAudioDevice(); var dictationGrammar = new DictationGrammar(); engine.LoadGrammar(dictationGrammar); 结

目标是使用SAPI口述中文名字,并获得拼音或相同发音的单词来记录名字的发音。但是当使用下面这样的听写语法时

var engine = new SpeechRecognitionEngine(CultureInfo.CurrentCulture);
engine.SetInputToDefaultAudioDevice();
var dictationGrammar = new DictationGrammar();
engine.LoadGrammar(dictationGrammar);
结果就是,口述一些中文名字时,总是试图得到一些有意义的短语


有办法达到我的目标吗?谢谢。

不要使用听写语法,而是使用语法生成器()-函数创建自己的语法,并将其与加载语法()-函数一起使用,因为听写语法仅适用于英语单词。即使使用你自己的语法,但你的口音应该是美国口音

Choices sList = new Choices(); 
sList.Add(new string[] { "pinyin" });
Grammar gr = new Grammar(new GrammarBuilder(sList));
engine.LoadGrammar(slist);

希望这对你有帮助

尝试使用发音语法

var engine = new SpeechRecognitionEngine(CultureInfo.CurrentCulture);
engine.SetInputToDefaultAudioDevice();
var dictationGrammar = new DictationGrammar("Pronunciation");
engine.LoadGrammar(dictationGrammar);

这将在中返回一组音素,并且不会尝试将其映射为字符串。

您需要提供更多详细信息。特别是,CultureInfo是什么?当前文化?你愿意切换到C++吗?本机API有很多功能没有在托管包装中公开,其中一些功能是做您想做的事情所需要的。@Eric,CultureInfo.CurrentCulture是中文,更具体地说是“zh CN”。C++是一种选择,虽然整个架构是C++,但我可以封装一些C++ DLL来使用。我已经尝试过了,但是它不起作用。实际上,使用发音语法仍然试图首先识别一些有意义的字符串,然后从该字符串中设置音素,而不是直接从音频中获取。所以这对人名不起作用。@ManShen你能详细说明一下吗?我对中文引擎不太熟悉,但英文引擎不是这样工作的;如果加载了发音模型(没有其他内容),它将返回原始音素。