问题 没有声音 - 虚拟助手 - Visual Studio

罗马

成员
加入
3月10日,2021年
消息
5
编程经验
1-3
嘿伙计们,我正在使用Visual Stuido的C#上的虚拟助手计算器。没有错误出现,但仍然在我说分配的激活工作中没有任何事情发生。我将衷心感谢您的帮助。

这是我的代码......

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Speech.Recognition;
using System.Speech.Synthesis;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        SpeechSynthesizer ss = new SpeechSynthesizer();

        SpeechRecognitionEngine ta = new SpeechRecognitionEngine();

        PromptBuilder pb = new PromptBuilder();

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Speak_Click(object sender, EventArgs e)
        {

            ss.SelectVoiceByHints(VoiceGender.Male);

            Choices list = new Choices();

            list.Add(File.ReadAllLines(@"C:\Users\Corporativo Isakar\OneDrive\Escritorio\George\georgecommands"));

            Grammar gr = new Grammar(new GrammarBuilder(list));

            try
            {
                ta.RequestRecognizerUpdate();
                ta.LoadGrammar(gr);
                ta.SpeechRecognized += Ta_SpeechRecognized;
                ta.SetInputToDefaultAudioDevice();
                ta.RecognizeAsync(RecognizeMode.Multiple);

            }
            catch
            {
                return;
            }

            pb.ClearContent();
            pb.AppendText(richTextBox1.Text);
            ss.Speak(pb);

        }

        public void Say(string phrase)
        {

            ss.SpeakAsync(phrase);
        }

        private void Ta_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {

            string speechSaid = e.Result.Text;

            switch (speechSaid)

            {
                case ("hey"):
                    Say("good morning sir");
                    break;
            }


        }

        private void RichTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

    }
}
 
最后编辑了主持人:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
首先,请不要发布未格式化的代码。阅读并不是很愉快。

其次,请不要发布无关的代码。我们不需要查看那些名称空间导入或那些空事件处理程序。这只是让我们更难解决实际与问题相关的东西。

一般来说,如果您希望我们志愿我们的时间和努力来帮助您,请花点时间,并努力帮助我们这样做,通过包括相关的一切,无论是什么都没有,也没有做出你所做的一切尽可能访问。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
当我说分配的激活工作时,没有任何反应
请恰好指出您预计某些事情的代码中的位置,并且完全是什么,以及实际发生的事情。这不仅仅是用户的角度来看,还有什么代表机告诉你的事情。如果您尚未调试代码,即设置断点,请逐步通过代码并检查每个步骤的应用程序,然后您需要先执行此操作,以便您可以为我们提供相关信息。
 

罗马

成员
加入
3月10日,2021年
消息
5
编程经验
1-3
请恰好指出您预计某些事情的代码中的位置,并且完全是什么,以及实际发生的事情。这不仅仅是用户的角度来看,还有什么代表机告诉你的事情。如果您尚未调试代码,即设置断点,请逐步通过代码并检查每个步骤的应用程序,然后您需要先执行此操作,以便您可以为我们提供相关信息。
感谢您的反馈意见。我期待代码玩家回答"good morning sir" whe I say "hey"。代码完全运行,但我在播放时没有得到回复,然后说"hey"。明白了吗? (一般来说,我正在努力回答我说话的代码,像Siri或Alexa这样的东西。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,887
地点
切萨皮克,va.
编程经验
10+
Are you sure that you aren't just silently eating an exception with your lines 54-57? Does you program actually say whatever is in the pb after you click the button?

接下来,Speacal认可的事件处理程序实际上被称为吗?您是否在那里设置一个断点来验证它是否被调用?
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
代码完美运行
你绝对肯定吗?你有没有调试并观看执行的路径,就像你期望并击中这一行一样:
C#:
ss.SpeakAsync(phrase);
with phrase containing "good morning sir"?
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
你能发布你的内容吗? Georgecommands. 文件?我想自己测试你的代码,但不能没有该文件。

编辑:我检查了文档,我可能只是硬代码"hey"那里,所以我会试试。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
I've taken a closer look at your code and it doesn't seem to make sense. Please explain the logical sequence that you're trying to implement. It seems to me that most of what's in Speak_Click should be in Form1_Load because it seems to be initial setup.
 

罗马

成员
加入
3月10日,2021年
消息
5
编程经验
1-3
I've taken a closer look at your code and it doesn't seem to make sense. Please explain the logical sequence that you're trying to implement. It seems to me that most of what's in Speak_Click should be in Form1_Load because it seems to be initial setup.

你是对的,我的糟糕。我已经修复了它,问题rn是我的代码找不到文档,但我正在努力。谢谢
 

罗马

成员
加入
3月10日,2021年
消息
5
编程经验
1-3
Are you sure that you aren't just silently eating an exception with your lines 54-57? Does you program actually say whatever is in the pb after you click the button?

接下来,Speacal认可的事件处理程序实际上被称为吗?您是否在那里设置一个断点来验证它是否被调用?
No, it never speaks.
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
No, it never speaks.
停止接近这件好像你只是一个用户。你不是。你是一个开发人员,所以相应行动。你不只是运行应用程序,看看它所做了什么。您使用VS中提供的调试工具调试代码,并在执行时观看代码和应用程​​序的状态。如果您不知道如何调试,那么您应该停止您正在做的事情和学习,因为每个开发人员都需要能够调试做任何使用。如果你在这里发布一个问题,我们会期望您首先彻底调试代码,所以如果我们向您询问特定方法是否执行,那么您需要实际看到它在调试器中执行,而不是猜测基于的发生了什么UI的行为。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,719
地点
悉尼,澳大利亚
编程经验
10+
也许我应该更容易尝试一些东西。
如果你对编程基本真的不充满信心,这可能不是一个坏主意。使用语音识别和综合时肯定是一个有趣和有趣的话题,但如果您不知道如何首先构建代码和调试,您就不会自行,因为你会继续犯错误与演讲部分有关。
 
最佳 底部