【问题标题】:How do you make c# ask for a confirmation?你如何让 c# 要求确认?
【发布时间】:2017-03-24 07:54:53
【问题描述】:

我不知道怎么做,所以如果我问我的 C# 语音应用程序,“呼叫标记”它会要求确认,只有当我说“是”时才给他打电话。

case "Call Mark:
    speak.SpeakAsync("Are you sure");

        break;

我猜我必须使用 Bool,但我不知道怎么做,所以我必须在你说“打电话给 Mark”之前说“是”。我尝试过的另一种方法就是让它在我说“是”时它会打电话给他。

【问题讨论】:

  • speak.SpeakAsync 返回一个布尔值。然后在您实际拨打电话之前检查该值。
  • 与手头的问题无关,但我怀疑将所有可能的命令硬编码到 switch 语句中......无论如何都要进行测试。
  • @DangerZone 否则你会怎么做?
  • @ScottGibbard - 我真的不能告诉你,因为我对你的代码甚至应用程序都不太了解,但想想一个带有语音识别功能的手机,有人可以通过名字呼叫任何联系人...您不可能为用户可能说出的每个名字/昵称添加一个案例。

标签: c# speech-recognition voice-recognition


【解决方案1】:

最好的办法是让.SpeakAsync() 方法返回一个布尔值。然后,您将在实际拨打电话之前检查结果。

case "Call Mark":
    bool confirmationResult = speak.SpeakAsync("Are you sure");
    if (confirmationResult)
        MakeCall();
    break;

【讨论】:

  • 这行得通,只是 speak.SpeakAsync("Are you sure"); 出现错误提示“无法将类型 'System.Speech.Synthesis.Prompt' 隐式转换为 'bool.'”
  • 如果 SpeakAsync() 方法来自第三方库,您将不得不利用该库提供的这个想法。
【解决方案2】:

为了清楚起见,我将使用高级算法来表达我的答案。

  1. 等待接收“呼叫标记”
  2. 说“你确定吗?”
  3. 如果答案是“是”,请致电马克。

在代码中:

if (speech = "CALL MARK) {
    var string input = Api.DetectSpeech(Source.Microphone);
    if (input = "YES") {
        Phone.DialNumber(Contacts.Mark);
    }
}

【讨论】:

  • @ScottGibbard:当然。请查看添加的代码。
  • 我遇到了两个问题。 1.) 没有“DetectSpeech”。 2.) 它说“不能将类型'string'隐式转换为'bool。'你能告诉我如何解决它们吗?否则,谢谢!
  • 嗯。对不起。看起来我正在查看错误的文档。我没有关于这个 api 的任何信息。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2019-07-08
相关资源
最近更新 更多