使用 c#toarduino 的语音识别项目的最简单方法
组件和用品
| × | 1 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
|
关于这个项目
注意:您好,
两年前我做了这个项目并得到了令人鼓舞的反馈。如果您是新会员,那么我建议您关注以下(2020 更新教程)
更新教程链接:
https://medium.com/illumination/how-to-make-your-first-voice-project-using-arduino-956bfd494947
谢谢:)
项目描述
我们都拥有不同类型的传感器,例如(耳朵、舌头、鼻子……),我们在日常生活中使用它们,不是以一种方式而是以两种方式进行通信,即数据的传输和接收。我们在机器中应用的概念相同!
作为初学者,几乎每个人都从 LED 闪烁开始,我也这样做了,但我想使用我的语音命令来控制这些电子组件。所以最后在我从互联网上搜索和学习之后,我完成了这个项目,并准备与创意社区特别是(初学者 )!使用Arduino进行语音识别的最简单方法!
为了让事情更简单,我们使用 LED。在这个项目中,我们将打开/关闭 LED,不是以标准方式而是使用我们的语音命令,令人兴奋的部分是它非常简单和容易,只需要一点编程知识就可以了!
我为什么要做这个项目?
这一切都始于我的老师向我们展示了一个 c# windows 窗体应用程序项目。在那个项目中,Sir 使用语音命令控制虚拟灯泡,它是使用 c# Visual Studio 软件制作的,没有 Arduino 或任何其他硬件。太神奇了 :) 所以对于一个使用 Arduino 的新项目,我想为什么不使用语音命令来控制 Led,因为在这个项目中,我们正在物理控制硬件,而不是先生演示的虚拟。
为什么这个项目很简单?
这个项目还有一个更重要的原因,那就是你们创客我认为这个项目将帮助创客社区创造新的东西,语音识别功能增加了项目的创造力和价值!现在令人惊奇的部分为什么它如此简单?因为你不需要任何外部模块 制作这个项目:) 我确信必须有一种方法可以在不使用语音识别模块的情况下制作这个项目!最后通过以下链接找到了这种方式https://www.c-sharpcorner.com/article/turning-led-off-and-on-through-voice-recognition/
如何制作?
收集此项目所需的所有组件。
- 在面包板上设计电路如下图
- 然后将 Arduino USB 电缆插入您的计算机
- 下载 Arduino 代码打开 Arduino IDE 并创建一个新的草图粘贴代码。
您只需要安装一个软件,那就是我使用的是 Microsoft Visual Studio 2010 版的 Visual Studio,您可以安装任何您想要的版本,只需确保您可以使用 c# 从它创建 Windows 窗体应用程序。 watch 下载视觉工作室
点击下方链接,然后点击下载->直接下载https://www.dropbox.com/sh/pmdflsjui0ayjcs/AAAO4sfb2Tc559CLyOQut_NDa?dl=0
大功告成
- 上传您的 Arduino 草图并通过单击绿色箭头开始按钮运行 c# 应用程序
注意#0: 如果您未包含 using.system.speech,则此项目将无法运行 库在你的 Visual Studio c# 代码中不用担心,只需按照下面的说明包含库转到上面的工具栏项目->添加引用->.Net ->搜索 using.system.speech 然后点击确定就可以了:)
注意#1: 确保您在 Arduino IDE 中选择的 COM 端口与 Visual Studio c# 代码中的相同。正如您在下面看到的,我的 COM 端口是 COM5,在 Arduino 和 C# 代码中相同。
如果您有任何困惑,只需观看此演示视频,您就可以使用语音控制 LED 了 :)
点击此处观看 Youtube 项目演示
你从这个项目中得到了什么?
发挥您的创造力,从这个项目中创造出新的东西。
学习、创造、分享和重复
代码
- Arduino 源代码
- C# 代码
Arduino 源代码 C/C++
语音识别项目的Arduino源代码/*这个程序是关于使用c#的语音识别库(使用system.speech)控制LED状态的ON和OFF *令人兴奋的部分是你不需要任何外部模块来传输数据arduino,因为您可以轻松*使用您的内置计算机麦克风或耳机麦克风。 * * 这个程序只是给初学者提供基本的想法,然后你自己的创造力如何以有用的方式使用它。 * 不断学习、分享、思考和重复 * 享受! * * 作者 Jalal Mansoori */const int blueLed=10;const int redLed=9;const int greenLed=8;charcomingData='0'; void setup() { // 把你的设置代码放在这里,运行一次://getting leds readySerial.begin(9600);pinMode(blueLed, OUTPUT);pinMode(redLed, OUTPUT);pinMode(greenLed, OUTPUT);} void loop() { // 把你的主要代码放在这里,重复运行:incomingData=Serial.read(); // 在我们的案例中,用于控制 LED 的开关盒我们只有 3 个蓝色、绿色和红色开关(incomingData){ //这些案例仅适用于 LED 的 ON 状态 // 对于蓝色 LED 案例 'B':digitalWrite(blueLed, HIGH );休息; // 对于红色 LED 案例 'R':digitalWrite(redLed, HIGH);休息; // 对于绿色 LED 案例 'G':digitalWrite(greenLed, HIGH);休息; //这些情况是 LED 的状态 OFF 和情况名称 z , x, c 只是随机的,因为您也可以更改但 // 请确保您也在 c# 代码中更改它。 // 对于蓝色 LED 案例 'Z':digitalWrite(blueLed, LOW);休息; // 对于红色 LED 案例 'X':digitalWrite(redLed, LOW);休息; // 对于绿色 LED 案例 'C':digitalWrite(greenLed, LOW);休息; //用于一次打开所有 LED :) case 'V':digitalWrite(blueLed, HIGH);数字写入(红灯,高);数字写入(绿灯,高);休息; //用于一次关闭所有 LED :) case 'M':digitalWrite(blueLed, LOW);数字写入(红灯,低);数字写入(绿灯,低);休息; }}
C# 代码C#
此代码适用于视觉工作室。在此代码中,您可以在顶部看到一些库,其中包含 using.system.speech 库,您需要将其包含在项目参考中这就是你的方式
工具栏
Project->Add Reference->.Net-> Search using system.speech->点击OK
这就是所有享受 :)
/* 该程序是连接 c# 和 Arduino 以将数据从计算机麦克风传输到 arduino 板 作者 Jalal Mansoori*/using System;using System.Windows.Forms;using System.IO.Ports; // 本库用于连接c#和Arduino,通过端口收发数据//以下是语音识别库using System.Speech;using System.Speech.Recognition;using System.Speech.Synthesis;namespace CsharpCode{ public partial class Form1 :Form { //创建对象SerialPort myPort =new SerialPort(); SpeechRecognitionEngine re =new SpeechRecognitionEngine(); SpeechSynthesizer ss =new SpeechSynthesizer(); // 当您希望程序与您对话时 Choices commands =new Choices(); // 这是一个重要的类,顾名思义我们将把我们的命令存储在这个对象中 public Form1() { InitializeComponent(); //Arduino板详细信息 myPort.PortName ="COM5"; // 我在 Arduino IDE 中的端口名称选择了 COM5,如果端口名称不同,则需要更改端口名称,只需检查 arduinoIDE myPort.BaudRate =9600; // 此速率与 arduino Serial.begin(9600) bits per second processing() 相同; } // 定义的函数处理将执行主指令! void processing() { //首先存储命令commands.Add(new string[] { "Blue On", "Red On", "Green On", "Blue Off", "Red Off", "Green Off" ,“退出”,“全部开启”,“全部关闭”,“Arduino 向制造商说再见”}); //现在我们将创建语法的对象,我们将在其中传递命令作为参数 Grammar gr =new Grammar(new GrammarBuilder(commands)); // 有关以下功能的更多信息,请参阅站点 https://docs.microsoft.com/en-us/dotnet/api/system.speech.recognition?view=netframework-4.7.2 re.RequestRecognizerUpdate(); // 在加载命令之前暂停语音识别引擎 re.LoadGrammarAsync(gr); re.SetInputToDefaultAudioDevice();//顾名思义输入设备内置麦克风或者你也可以连接耳机等... re.SpeechRecognized +=new EventHandler(re_SpeechRecognized); } void re_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { switch(e.Result.Text) { ////对于 LED 状态 ON // 对于蓝色 LED 情况“Blue On”:sendDataToArduino('B');休息; // 对于红色 LED 案例“Red On”:sendDataToArduino('R');休息; // 对于绿色 LED 案例“Green On”:sendDataToArduino('G');休息; //对于 LED 状态关闭 // 对于蓝色 LED 情况“Blue Off”:sendDataToArduino('Z');休息; // 对于红色 LED 案例“Red Off”:sendDataToArduino('X');休息; // 对于绿色 LED 案例“Green Off”:sendDataToArduino('C');休息; //用于一次打开所有 LED :) case "All On":sendDataToArduino('V');休息; //用于一次关闭所有 LED :) case "All Off":sendDataToArduino('M');休息; //程序将回复案例“Arduino Say Good Bye to makers”:ss.SpeakAsync("Good Bye Makers"); // 语音合成对象用于此目的 break; // 使用语音退出程序 :) case "Exit":Application.Exit();休息; } txtCommands.Text +=e.Result.Text.ToString() + Environment.NewLine;// 每当我们命令 arduino 文本将附加并显示在文本框中 } void sendDataToArduino(char character) { myPort.Open(); myPort.Write(character.ToString()); myPort.Close(); } private void btnStop_Click(object sender, EventArgs e) { re.RecognizeAsyncStop(); //btnStart.Enabled =true; btnStop.Enabled =false; btnStart.Enabled =true; } private void btnStart_Click(object sender, EventArgs e) { re.RecognizeAsync(RecognizeMode.Multiple); btnStop.Enabled =true; btnStart.Enabled =false; MessageBox.Show("语音识别开始!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } }}
示意图
只需按照原理图连接面包板上的组件1 -> 首先如图所示连接 LED 和电阻器
2-> 然后一一开始,在电阻连接到arduino数字引脚盒的同一列上连接led +ive端子
GreenLed +ive 端子至数字引脚 8
RedLed +ive 端子至数字引脚 9
BlueLed +ive 终端到数字 Pin 10
3-> 最后使用跳线将 arduino 的 Ground 连接到 leds -ive 端子,如图所示 原理图_ob2ZmiQwOV.fzz
制造工艺