我正在 c# .NET Framework 4.0 中制作基于语音的应用程序
我想使用语音文件(如 .wav)作为语法而不是字符串,因为我的应用程序将使用非英语语言,并且很难将其转换为英文字符。例如,会有像Khorooj或Taghire 'onvan 这样的表达式。而且会有很多问题,比如一个字母的短语差异等等。所以通过语音文件作为参考,这样做会容易得多。
我该如何开始?谢谢!
我正在 c# .NET Framework 4.0 中制作基于语音的应用程序
我想使用语音文件(如 .wav)作为语法而不是字符串,因为我的应用程序将使用非英语语言,并且很难将其转换为英文字符。例如,会有像Khorooj或Taghire 'onvan 这样的表达式。而且会有很多问题,比如一个字母的短语差异等等。所以通过语音文件作为参考,这样做会容易得多。
我该如何开始?谢谢!
作为变体,我建议您使用 Google Voice Search (GVS)。
GVS 使用 flac 作为输入音频的音频格式,因此您应该使用 Cuetools 之类的东西将波流转换为 flac
public static int Wav2Flac(String wavName, string flacName)
{
int sampleRate = 0;
IAudioSource audioSource = new WAVReader(wavName, null);
AudioBuffer buff = new AudioBuffer(audioSource, 0x10000);
FlakeWriter flakewriter = new FlakeWriter(flacName, audioSource.PCM);
sampleRate = audioSource.PCM.SampleRate;
FlakeWriter audioDest = flakewriter;
while (audioSource.Read(buff, -1) != 0)
{
audioDest.Write(buff);
}
audioDest.Close();
audioDest.Close();
return sampleRate;
}
public static String GoogleSpeechRequest(String flacName, int sampleRate)
{
WebRequest request = WebRequest.Create("https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU");
request.Method = "POST";
byte[] byteArray = File.ReadAllBytes(flacName);
// Set the ContentType property of the WebRequest.
request.ContentType = "audio/x-flac; rate=" + sampleRate; //"16000";
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
您不能将语音文件用作语法。Microsoft 语音识别引擎需要W3C 开放标准机构指定格式的语法。语法并不是语音识别引擎应该理解的所有单词的列表。语法是一组规则,用于对与系统的特定对话的预期响应。另一种说法是语法没有指定语音识别系统将理解的语言。您需要获取语言包并为您要使用的特定语音供应商安装它们。对于 Microsoft,它也可以特定于您使用的操作系统版本。以下是Vista 支持的语言。您可能需要与其他语音记录供应商合作以支持您想要的语言,例如Nuance.