- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试通过 TCP 套接字在 C# 中进行“流式”语音识别。我遇到的问题是 SpeechRecognitionEngine.SetInputToAudioStream() 似乎需要一个可以搜索的定义长度的流。现在我能想到的唯一方法是随着更多输入的输入在 MemoryStream 上重复运行识别器。
下面是一些代码来说明:
SpeechRecognitionEngine appRecognizer = new SpeechRecognitionEngine();
System.Speech.AudioFormat.SpeechAudioFormatInfo formatInfo = new System.Speech.AudioFormat.SpeechAudioFormatInfo(8000, System.Speech.AudioFormat.AudioBitsPerSample.Sixteen, System.Speech.AudioFormat.AudioChannel.Mono);
NetworkStream stream = new NetworkStream(socket,true);
appRecognizer.SetInputToAudioStream(stream, formatInfo);
// At the line above a "NotSupportedException" complaining that "This stream does not support seek operations."
有谁知道如何解决这个问题?它必须支持某种流式输入,因为它可以使用 SetInputToDefaultAudioDevice() 与麦克风一起正常工作。
谢谢,肖恩
最佳答案
我通过覆盖流类获得了实时语音识别:
class SpeechStreamer : Stream
{
private AutoResetEvent _writeEvent;
private List<byte> _buffer;
private int _buffersize;
private int _readposition;
private int _writeposition;
private bool _reset;
public SpeechStreamer(int bufferSize)
{
_writeEvent = new AutoResetEvent(false);
_buffersize = bufferSize;
_buffer = new List<byte>(_buffersize);
for (int i = 0; i < _buffersize;i++ )
_buffer.Add(new byte());
_readposition = 0;
_writeposition = 0;
}
public override bool CanRead
{
get { return true; }
}
public override bool CanSeek
{
get { return false; }
}
public override bool CanWrite
{
get { return true; }
}
public override long Length
{
get { return -1L; }
}
public override long Position
{
get { return 0L; }
set { }
}
public override long Seek(long offset, SeekOrigin origin)
{
return 0L;
}
public override void SetLength(long value)
{
}
public override int Read(byte[] buffer, int offset, int count)
{
int i = 0;
while (i<count && _writeEvent!=null)
{
if (!_reset && _readposition >= _writeposition)
{
_writeEvent.WaitOne(100, true);
continue;
}
buffer[i] = _buffer[_readposition+offset];
_readposition++;
if (_readposition == _buffersize)
{
_readposition = 0;
_reset = false;
}
i++;
}
return count;
}
public override void Write(byte[] buffer, int offset, int count)
{
for (int i = offset; i < offset+count; i++)
{
_buffer[_writeposition] = buffer[i];
_writeposition++;
if (_writeposition == _buffersize)
{
_writeposition = 0;
_reset = true;
}
}
_writeEvent.Set();
}
public override void Close()
{
_writeEvent.Close();
_writeEvent = null;
base.Close();
}
public override void Flush()
{
}
}
... 并使用它的实例作为 SetInputToAudioStream 方法的流输入。一旦流返回一个长度或返回的计数小于请求的长度,识别引擎就认为输入已完成。这会设置一个永不结束的循环缓冲区。
关于c# - 流式输入到 System.Speech.Recognition.SpeechRecognitionEngine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1682902/
我有兴趣了解有关模式识别的更多信息。我知道这是一个广泛的领域,所以我将列出一些我想学习处理的特定类型的问题: 在看似随机的字节集中查找模式。 识别图像中的已知形状(例如圆形和正方形)。 注意给定位置流
.NET 中有两个类似的用于语音识别的命名空间和程序集。我试图了解其中的差异以及何时适合使用其中之一。 程序集 System.Speech(在 System.Speech.dll 中)有 System
我正在玩 IBM Watson 的语音到文本演示:https://speech-to-text-demo.mybluemix.net/ 。我上传了一个有 2 个扬声器的音频文件。 Watson 返回的
我使用 Google Speech API 进行语音到文本的转换。但是,它会过滤掉诸如“呃,嗯,啊”等填充词。我有什么办法可以获得包含填充词的文本? 最佳答案 使用像 Kaldi 这样更灵活的 api
我正在使用 Microsoft 的认知服务。我有一个音频输入,需要识别多个发言者及其各自的文本。 根据我的理解,Speaker Rekognition API 可以识别不同的个人,Bing Speec
我需要训练一个双向 LSTM 模型来识别离散语音(从 0 到 9 的单个数字)我已经记录了 100 个说话者的语音。我接下来该怎么做? (假设我将它们拆分为单个 .wav 文件,每个文件包含一个数字)
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
为计算加权 sigmoid 交叉熵损失或数据集不平衡情况下的任何加权损失选择权重的一般逻辑是什么?问题域基于视觉/图像分类。 最佳答案 这篇 CVPR '19 论文是一个很好的引用: "Class-B
是否有任何软件能够获取音频文件并输出语音 (IPA) 文本? 我了解那里的大部分软件都直接将其转化为一种语言,但是否有一种“可教”的? 最佳答案 CMU Sphinx也许能够做你想做的。有几个不同的版
我最近使用说话人识别库 - ALIZE 进行编程。但是我有一些关于如何安装和执行演示的问题。有人可以帮我看看我的安装和执行顺序有什么问题。 我使用 Mac OS 系统: 1、下载lib ALIZE和L
我认为有一些算法可以评估绘制符号和预期符号之间的差异,或者类似的东西。任何帮助将不胜感激 :)) 最佳答案 您可以实现一个简单的神经网络来识别手写数字。最简单的实现类型是通过反向传播训练的前馈网络(它
执行此操作的最佳库是什么。并且是质量好足以依靠。不可能用说话者的声音训练系统或使用术语词典来改善结果。 最佳答案 在 Windows 上,您想使用 SAPI 接口(interface)(语音 API)
我找到了一些使用深度学习进行音频分类的论文和幻灯片。 一些研究使用频谱图作为深度学习模型的输入。 我想知道确切和实际的实现。 我找到了 this slide . 第 67 页 据我了解,第一层节点数为
我正在使用Google的语音识别API。我用Java创建了一个包装器(像这样:http://pastebin.com/zJEhnJ74);一切正常,但有时我会收到http 403或http 500,所
我正在尝试结合语音识别和说话人二值化技术来识别对话中有多少说话人以及哪个说话人说了什么。 为此,我使用 CMU Sphinx和 LIUM Speaker Diarization . 我可以分别运行这两
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试研究可用的语音识别引擎和 SDK,以开发支持 Windows CE 语音的应用程序。我遇到过 Nuance,但没有看到其他任何东西。如果可能的话,我更喜欢 .Net SDK,但我想大多数会是
我一直在对用于我的对象识别程序的正确算法进行大量搜索。但我发现的一切都有一些重大缺陷。 我的程序应该在遇到新对象时在线学习它们。当它遇到一个新对象时,在它上面有一个框并学习该对象(OpenTLD 完美
我正在尝试使用Pocketsphinx(。进行简单的语音到文本映射。语法非常简单,例如: public = (Matt, Anna, Tom, Christine)+ (One | Two | Th
我想在我的 Mac OS x 上实现一个通过麦克风接收语音的系统。我知道如果不训练系统,任意语音识别几乎是不可能的,所以我愿意将其限制为 10 个简单的句子。它必须高度准确地识别这 10 个句子中的哪
我是一名优秀的程序员,十分优秀!