- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个语音识别程序,它需要在锁定的 Windows 计算机上运行,作为家庭自动化项目的一部分。但似乎 SpeechRecognitionEngine 在计算机锁定时停止识别(并在计算机解锁时继续)。
我当前的测试程序如下所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Speech.Recognition;
using System.Globalization;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SpeechRecognitionEngine sre;
public Form1()
{
InitializeComponent();
CultureInfo ci = new CultureInfo("en-us");
sre = new SpeechRecognitionEngine(ci);
sre.SetInputToDefaultAudioDevice();
GrammarBuilder gb = new GrammarBuilder("Hello");
sre.LoadGrammarAsync(new Grammar(gb));
sre.SpeechRecognized += sre_SpeechRecognized;
sre.RecognizeAsync(RecognizeMode.Multiple);
}
void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
listBox1.Items.Add(DateTime.Now.ToString() + " " + e.Result.Text);
}
}
}
我想知道是否可以将 SpeechRecognitionEngine 的输入(可能使用 SetInputToAudioStream
或 SetInputToWaveStream
方法)更改为麦克风输入的实时音频流,这样就可以解决问题。因为好像电脑的时候麦克风没有关掉(用录音机试过)。
不幸的是,我无法找到一种方法来获得麦克风输入的实时流。
最佳答案
我找到了使用 NAudio ( http://naudio.codeplex.com/ ) 和来自 StackOverflow 答案 ( https://stackoverflow.com/a/11813276/2950065 ) 的 SpeechStreamer 类的解决方法。
更新后的测试程序,在计算机锁定时继续识别,如下所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Speech.Recognition;
using System.Globalization;
using NAudio.Wave;
using System.IO;
using System.IO.Pipes;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SpeechRecognitionEngine sre;
WaveIn wi;
SpeechStreamer ss;
public Form1()
{
InitializeComponent();
WaveCallbackInfo callbackInfo = WaveCallbackInfo.FunctionCallback();
wi = new WaveIn(callbackInfo);
ss = new SpeechStreamer(100000);
wi.DataAvailable += wi_DataAvailable;
wi.StartRecording();
CultureInfo ci = new CultureInfo("en-us");
sre = new SpeechRecognitionEngine(ci);
// The default format for WaveIn is 8000 samples/sec, 16 bit, 1 channel
Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo safi = new Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo(8000, Microsoft.Speech.AudioFormat.AudioBitsPerSample.Sixteen, Microsoft.Speech.AudioFormat.AudioChannel.Mono);
sre.SetInputToAudioStream(ss, safi);
GrammarBuilder gb = new GrammarBuilder("Hello");
sre.LoadGrammarAsync(new Grammar(gb));
sre.SpeechRecognized += sre_SpeechRecognized;
sre.RecognizeAsync(RecognizeMode.Multiple);
}
void wi_DataAvailable(object sender, WaveInEventArgs e)
{
ss.Write(e.Buffer, 0, e.BytesRecorded);
}
void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
listBox1.Items.Add(DateTime.Now.ToString() + " " + e.Result.Text);
}
}
}
关于c# - SpeechRecognitionEngine 在计算机被锁定时停止识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210186/
我正在尝试创建一个语音识别程序,它需要在锁定的 Windows 计算机上运行,作为家庭自动化项目的一部分。但似乎 SpeechRecognitionEngine 在计算机锁定时停止识别(并在计算机
我们想使用一个 XML 文件作为语法,列出我们系统的所有命令, 然而,其中一个命令将是“查找用户 xxxxxx”,其中 xxxxx 将是一个唯一编号。 如果语法 xml 文件中有创建此“通配符/搜索项
我一直在使用 Kinect 和语音识别,我注意到我无法让 AudioLevel 成员从我的 SpeechRecognitionEngine 对象中更改。 我成功地让命令被识别,所以我知道 kinect
我正在尝试启动一个简单的语音识别程序,但它不起作用,我已经安装了一些语言(en-GB 和 en-US),但每当我使用以下内容时: SpeechRecognitionEngine.InstalledRe
我正在使用 Microsoft System.Speech SpeechRecognitionEngine 进行听写,我需要能够记录所有正在处理的音频并同时对其执行语音识别。 现在我可以很好地进行语音
我正在 VS 2012 中开发允许语音输入的 C# WPF 应用程序。我使用 SpeechRecognitionEngine 而不是 SpeechRecognizer,因为后者在应用程序和 Windo
当我加载语法并使用时: SpeechRecognitionEngine _sre = new SpeechRecognitionEngine(); ... _sre.RecognizeAsync(Re
我正在尝试通过 TCP 套接字在 C# 中进行“流式”语音识别。我遇到的问题是 SpeechRecognitionEngine.SetInputToAudioStream() 似乎需要一个可以搜索的定
我正在尝试在 Unity 中使用 .NET 3.0 框架中的语音识别系统。因此,我将 .NET 3.0 中的 System.Speech.dll 及其依赖项导入到 Assets 文件夹中,因为更高版本
我正在尝试在 Unity 中使用 .NET 3.0 框架中的语音识别系统。因此,我将 .NET 3.0 中的 System.Speech.dll 及其依赖项导入到 Assets 文件夹中,因为更高版本
我在尝试实现 Microsoft 提供的有关如何使用 SpeechRecognitionEngine (https://msdn.microsoft.com/en-us/library/system.
我已经使用 System.Speech.Recognition 命名空间进行编码,并使用语法和 SpeechRecognitionEngine 的 XML SRGS 文件。 我希望能够通过训练对我编写
我正在使用 Microsoft.Speech(不是 System.Speech!),我正在尝试将音频流的输入设置为我的麦克风,这是默认的音频设备,但它抛出异常: System.InvalidOpera
我目前正在通过从 xml 文件加载一个非常简单的规则来测试 SpeechRecognitionEngine。事实上,它是介于(“解密电子邮件”、“删除加密”)或(“加密电子邮件”、“添加加密”)之间的
我正在研究这个 SAPI v5.1 库。所以我正在测试我拥有的示例 WAV 文件。 (Download it from here)。无论如何,该文件中的声音清晰而轻松。它只包含一个单词,即第三个单词。
是否可以通过编程方式训练识别器提供 .wavs 而不是对着麦克风说话? 如果是这样,该怎么做?目前我有对 0.wav 文件中的音频执行识别并将识别的文本写入控制台的代码。 Imports System
我是一名优秀的程序员,十分优秀!