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などを使用してwaveストリームを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 の場合、使用している OS のバージョンに固有の場合もあります。Vista でサポートされている言語は次のとおりです。必要な言語をサポートするには、 Nuanceなどの別の音声録音ベンダーを使用する必要がある場合があります。.