2014-09-18 7 views
-3

정수가 쓰이는 wav 파일이 있습니다. 이러한 개별 정수를 감지하고 문자열로 변환해야합니다. herewav 파일에서 텍스트로 음성 C#

Microsoft SpeechRecognitionEngine을 사용하면 wav 파일에서 정수를 거의 감지 할 수 없습니다.

은 SRE 설정입니다 :

sre.SetInputToWaveFile("D:\\Speeches\\Best3.wav"); 
sre.BabbleTimeout = new TimeSpan(Int32.MaxValue); 
sre.InitialSilenceTimeout = new TimeSpan(Int32.MaxValue); 
sre.EndSilenceTimeout = new TimeSpan(100000000); 
sre.EndSilenceTimeoutAmbiguous = new TimeSpan(100000000); 

답변

0

내가 시간 제한 값의 일부는 극단적 인 생각하지만, 나는 다음과 같은 코드를 구문 분석 wav 다양한 파일을 얻을 수있었습니다 :

using System; 
using System.Speech.Recognition; 

namespace SR 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var sre = new SpeechRecognitionEngine()) 
      { 
       sre.SetInputToWaveFile(@"D:\test.wav"); 
       sre.LoadGrammar(new DictationGrammar()); 

       sre.BabbleTimeout = new TimeSpan(Int32.MaxValue); 
       sre.InitialSilenceTimeout = new TimeSpan(Int32.MaxValue); 
       sre.EndSilenceTimeout = new TimeSpan(100000000); 
       sre.EndSilenceTimeoutAmbiguous = new TimeSpan(100000000); 

       var result = sre.Recognize(); 
       Console.WriteLine(result.Text); 
      } 

      Console.ReadLine(); 

     } 
    } 
} 

LoadGrammar()으로 전화해야합니다. DictationGrammar보다 더 나은 옵션이있을 수 있지만 내 샘플에서는 효과가있었습니다.

null에 대해서도 result을 확인하십시오. 인식에 실패하면 오류가 표시됩니다.

+0

정수 0-9 또는 포함될 모든 범위 만 포함하는 사용자 지정 문법을로드 할 수 있습니다. 그런 다음 그 숫자 만 인식되고 모든 정수가 아닌 경우 해당 숫자가 인식되지 않습니다. 문법은 꽤 까다 롭습니다. 그러나 행 번호를 말하면 목록에있는 항목을 열 수있는 맞춤 문법을 위해이 작업을 수행 했으므로 작업을 완료 할 수 있습니다 – pinkfloydx33

관련 문제