小例子,C#开发之kinect体感交互设备英文语音识别
2017-05-08 14:58
531 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.Kinect;
using Microsoft.Speech.AudioFormat;
using Microsoft.Speech.Recognition;
namespace KinectSpeech
{
class Program
{
static void Main(string[] args)
{
KinectSensor KinectSensor = (from k in KinectSensor.KinectSensors
where k.Status == KinectStatus.Connected
select k).FirstOrDefault();
if (KinectSensor == null)
{
Console.WriteLine("No Kinect Connected\n" + "Press any key to continue.\n");
Console.ReadKey(true);
return;
}
KinectSensor.Start();
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.Kinect;
using Microsoft.Speech.AudioFormat;
using Microsoft.Speech.Recognition;
namespace KinectSpeech
{
class Program
{
static void Main(string[] args)
{
KinectSensor KinectSensor = (from k in KinectSensor.KinectSensors
where k.Status == KinectStatus.Connected
select k).FirstOrDefault();
if (KinectSensor == null)
{
Console.WriteLine("No Kinect Connected\n" + "Press any key to continue.\n");
Console.ReadKey(true);
return;
}
KinectSensor.Start();
KinectAudioSource audioSource = KinectSensor.AudioSource; audioSource.EchoCancellationMode = EchoCancellationMode.None; audioSource.AutomaticGainControlEnabled = false; RecognizerInfo recognizerInfo = GetKinectRecognizer(); using (var speechRecognitionEngine = new SpeechRecognitionEngine(recognizerInfo.Id)) { var colors = new Choices(); colors.Add("help"); colors.Add("green"); colors.Add("blue"); var grammatBuilder = new GrammarBuilder { Culture = recognizerInfo.Culture }; grammatBuilder.Append(colors); var g = new Grammar(grammatBuilder); speechRecognitionEngine.LoadGrammar(g); speechRecognitionEngine.SpeechRecognized += SreSpeechRecognized; speechRecognitionEngine.SpeechHypothesized += SreSpeechHypothesized; speechRecognitionEngine.SpeechRecognitionRejected += SreSpeechRecognitionRejected; using (Stream s = audioSource.Start()) { speechRecognitionEngine.SetInputToAudioStream( s, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); Console.WriteLine( "Recognizing speech. Say: 'help', 'green' or 'blue'. Press ENTER to stop"); speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); Console.ReadLine(); Console.WriteLine("Stopping recognizer ..."); speechRecognitionEngine.RecognizeAsyncStop(); } } } private static RecognizerInfo GetKinectRecognizer() { Func<RecognizerInfo, bool> matchingFunc = r => { string value; r.AdditionalInfo.TryGetValue("Kinect", out value); return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "en-US".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase); }; return SpeechRecognitionEngine.InstalledRecognizers().Where(matchingFunc). FirstOrDefault(); } private static void SreSpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) { Console.WriteLine("\nSpeech Rejected"); if (e.Result != null) { DumpRecordedAudio(e.Result.Audio); } } private static void SreSpeechHypothesized(object sender, SpeechHypothesizedEventArgs e) { Console.Write("\rSpeech Hypothesized: \t{0}", e.Result.Text); } private static void SreSpeechRecognized(object sender, SpeechRecognizedEventArgs e) { if (e.Result.Confidence >= 0.7) { Console.WriteLine("\nSpeech Recognized: \t{0}\tConfidence:\t{1}", e.Result.Text, e.Result.Confidence); } else { Console.WriteLine("\nSpeech Recognized but confidence was too low: \t{0}", e.Result.Confidence); DumpRecordedAudio(e.Result.Audio); } } private static void DumpRecordedAudio(RecognizedAudio audio) { if (audio == null) return; int fileId = 0; string filename; while (File.Exists((filename = "RetainedAudio_" + fileId + ".wav"))) fileId++; Console.WriteLine("\nWriting file: {0}", filename); using (var file = new FileStream(filename, System.IO.FileMode.CreateNew)) audio.WriteToWaveStream(file); } }
}
相关文章推荐
- web服务器控件的开发例子 C# .net
- 智能设备开发中C#调用DLL传参及返回字符串的方法
- 用c#进行directX开发的一个简单例子
- 英文的Smart Card 开发环境大全(设备齐全啊)
- 智能设备的C#和C++的混合项目开发心得(非托管的DLL函数调用)
- 今天没事,看到一个用C#开发OutLook插件的例子,顺便自己做了一个
- c#在智能设备开发中截获PPC(PocketPC)硬件按钮事件
- 《Windows Mobile 平台应用与开发》C#【人出版】例子下载!
- 【转】智能设备的C#和C++的混合项目开发心得(非托管的DLL函数调用)
- 对C#开发经验技巧宝典-如何对计算结果四舍五入例子的异议
- C#进行Visio二次开发之图纸设备信息的保存
- C#进行Visio二次开发之设备状态跟踪
- 自定义控件:使用智能设备扩展在 C# 中开发自定义控件
- 用c#进行移动设备开发时rda同步数据时的设置详细过程
- c#在智能设备开发中截获PPC(PocketPC)硬件按钮事件
- 使用智能设备扩展在 C# 中开发自定义控件(转)
- C#和硬件驱动交互编程 --东进语音卡项目例子.
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- C#移动设备开发 - WM WP Andriod IPhone
- c#在智能设备开发中截获PPC(PocketPC)硬件按钮事件_.Net技术库_网络大本营