如何使用NAudio从Wav文件中读取文本?

时间:2015-12-25 05:10:30

标签: c#-4.0 audio naudio

我有一个 .wav 文件,其中包含文字" hello"

目标是阅读.wav文件并获取文本。我使用下面的代码

为此目的使用NAudio
using (WaveFileReader reader = new WaveFileReader("D:\\test.wav"))
{                
   byte[] buffer = new byte[reader.Length];
   int read = reader.Read(buffer, 0, buffer.Length);
   short[] sampleBuffer = new short[read / 2];
   System.Buffer.BlockCopy(buffer, 0, sampleBuffer, 0, read);
}

在将数组转换回字符串时,我收到空白文本

var bytes = a.SelectMany(x => BitConverter.GetBytes(x)).ToArray();
var originalText = System.Text.Encoding.Unicode.GetString(bytes); 

我错过了什么?请帮忙

2 个答案:

答案 0 :(得分:1)

现在您已经澄清了您的问题(包括评论中的内容),这是一个有效的问题并且有答案!

Microsoft Speech Platform Use WAV File Input for Speech Recognition

该页面上的示例显示使用API​​输入WAV文件并输出如下文本:

The following are the contents of the grammar FlightDestination.grxml.

<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-US" mode="voice" root="destination" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">
  <rule id="destination"> 
    <item> I want to fly to </item>
    <ruleref uri="#city"/> 
  </rule>

  <rule id="city">
    <one-of>
      <item> Boston </item>
      <item> Madrid </item>
      <item> London </item>
    </one-of>
  </rule>
</grammar>

这似乎正是您所寻找的。

答案 1 :(得分:0)

我有一些非常好的指针,比如

Voice/Speech to text

然后

Speech Recognition with C# – Dictation and Custom grammar

然后

Speech Recognition and the System.Speech namespace

Creating your own custom Grammar, and filtering recognition based on confidence

Speech synthesizers

Speech Recognition

这对我很有帮助。我理解这个概念及其实施方式。需要了解更多关于 Grammers和SpeechRecognitionEngine

的信息