我最近在 Google search via voice in c# 中发现了一段很棒的代码,它帮助我了解了如何将用户输入转换为程序可以读取的文本,并将其放入网络搜索中。这我开始工作了。但现在我想看看我能走多远,但在过去的几周里,我完全迷失了。我对原版所做的一些调整有一些疑问,但这些调整不起作用。
default;
if (speech.ToLower().Contains("play song", "playlist", "play"))
{
string songName = speech.Replace(' ', ' ');
songName = speech.Replace(' ', ' ');
songName = System.Diagnostics.Process.Start(songName);
string song = @"C:file location of song" + songName;
System.Diagnostics.Process.Start(songName);
}
if (speech.ToLower().Contains("type"))
{
string wantedText = speech.Replace(' ', ' ');
wantedText = speech.Replace(' ', ' ');
wantedText = System.Diagnostics.Process.Start(wantedText);
string song = wantedText;
System.Diagnostics.Process.Start(wantedText);
}
break;
1:要播放歌曲:
a)(“播放歌曲”,“播放列表”,“播放”)犯了一个错误,说“方法'Contains'没有重载需要3个参数”。我如何能够为这个或任何未来的语音到文本代码提出三个或更多论点?
b)据我所知,使用 System.Diagnostics.Process.Start 显然行不通。我不知道在这种情况下该使用什么系统。
2:为了在活动窗口中直接输入:
a) 我缺乏 C# 知识阻碍了我推进这个想法的能力。我的第一个想法是把它当作我在命令提示符上输入语音到文本,我可以这样做。但我希望它不是转到命令提示符,而是转到活动窗口中活动的闪烁文本光标,该窗口可以是 Word 或任何搜索引擎。我还认为这可能与上面链接中的原始 URL 版本有类似的过程。
b)据我所知,使用 System.Diagnostics.Process.Start 显然行不通。我不知道在这种情况下使用什么系统。是的,与问题 1b 相同。我不知道两者的过程是否相同。
1a)
Contains
检查一个字符串是否包含在另一个字符串中。如果你想检查多个字符串,你需要多次调用它,如下所示:
var lower = speech.ToLower();
if (lower.Contains("play song") || lower.Contains("playlist") || lower.Contains("play"))
{ ... }
现在,在这种特定情况下,您应该意识到最后一个条件也满足前两个条件,因此您可以将条件缩短为:
if (speech.ToLower().Contains("play"))
这也将涵盖其他两种情况(因为“播放列表”和“播放歌曲”都包含字符串“播放”)。
1b) 您需要启动音乐播放器并将歌曲名作为参数传递。您可以尝试启动资源管理器并将歌曲名作为参数传递。我认为资源管理器会自动启动与扩展关联的程序(如果存在这样的关联)。
2a)这并不是一个真正的问题。 SO 旨在帮助解决有关编程的特定问题。你应该首先尝试弄清楚你想做什么,然后尝试实现它并带着有关它的具体问题回来。
2b) 参见 1b)