2013-02-14 11 views
10

में पाठ में कनवर्ट करने के लिए कैसे करें क्या माइक्रोफोन से बात करने के बजाए प्रोग्रामिंग को पहचानने वाले प्रोग्राम को प्रोग्राम करना संभव है?स्पीच रिकॉग्निशनइंजिन को प्रोग्रामेटिक रूप से प्रशिक्षित करने और ऑडियो फ़ाइल को सी # या vb.net

यदि हां, तो यह कैसे ?, वर्तमान में मैं कोड है कि एक 0.wav फ़ाइल में ऑडियो पर मान्यता करता है और कंसोल के लिए पहचाने गए पाठ लिखते हैं की है।

Imports System.IO 
Imports System.Speech.Recognition 
Imports System.Speech.AudioFormat 

Namespace SampleRecognition 
    Class Program 
     Shared completed As Boolean 

     Public Shared Sub Main(ByVal args As String()) 
      Using recognizer As New SpeechRecognitionEngine() 
       Dim dictation As Grammar = New DictationGrammar() 
       dictation.Name = "Dictation Grammar" 
       recognizer.LoadGrammar(dictation) 
       ' Configure the input to the recognizer. 
       recognizer.SetInputToWaveFile("C:\Users\ME\v02\0.wav") 

       ' Attach event handlers for the results of recognition. 
       AddHandler recognizer.SpeechRecognized, AddressOf recognizer_SpeechRecognized 
       AddHandler recognizer.RecognizeCompleted, AddressOf recognizer_RecognizeCompleted 

       ' Perform recognition on the entire file. 
       Console.WriteLine("Starting asynchronous recognition...") 
       completed = False 
       recognizer.RecognizeAsync() 
       ' Keep the console window open. 
       While Not completed 
        Console.ReadLine() 
       End While 
       Console.WriteLine("Done.") 
      End Using 

      Console.WriteLine() 
      Console.WriteLine("Press any key to exit...") 
      Console.ReadKey() 
     End Sub 

     ' Handle the SpeechRecognized event. 
     Private Shared Sub recognizer_SpeechRecognized(ByVal sender As Object, ByVal e As SpeechRecognizedEventArgs) 
      If e.Result IsNot Nothing AndAlso e.Result.Text IsNot Nothing Then 
       Console.WriteLine(" Recognized text = {0}", e.Result.Text) 
      Else 
       Console.WriteLine(" Recognized text not available.") 
      End If 
     End Sub 

     ' Handle the RecognizeCompleted event. 
     Private Shared Sub recognizer_RecognizeCompleted(ByVal sender As Object, ByVal e As RecognizeCompletedEventArgs) 
      If e.[Error] IsNot Nothing Then 
       Console.WriteLine(" Error encountered, {0}: {1}", e.[Error].[GetType]().Name, e.[Error].Message) 
      End If 
      If e.Cancelled Then 
       Console.WriteLine(" Operation cancelled.") 
      End If 
      If e.InputStreamEnded Then 
       Console.WriteLine(" End of stream encountered.") 
      End If 
      completed = True 
     End Sub 
    End Class 
End Namespace 

संपादित

मैं प्रशिक्षण विज़ार्ड का उपयोग कर समझते हैं कि यह

खुलने वाक् पहचान के द्वारा पूरा किया, प्रारंभ पर क्लिक करने के लिए उपयोगी है बटन> नियंत्रण पैनल-> ​​Access- की आसानी> भाषण मान्यता

कस्टम WAV या यहां तक ​​कि एमपी 3 फ़ाइलों के साथ भाषण मान्यता को कैसे सुरक्षित किया जाए?

जब प्रशिक्षण जादूगर (नियंत्रण कक्ष प्रशिक्षण यूआई) का उपयोग करते हुए प्रशिक्षण फ़ाइलें {AppData} \ स्थानीय \ Microsoft \ भाषण \ Files \ TrainingAudio में संग्रहीत हैं।

प्रशिक्षण विज़ार्ड का उपयोग करने के बजाय मैं कस्टम प्रशिक्षण का उपयोग कैसे कर सकता हूं या कैसे कर सकता हूं?

भाषण नियंत्रण कक्ष फ़ाइलें कुंजी HKCU \ Software \ Microsoft \ भाषण \ RecoProfiles \ टोकन {ProfileGUID} में प्रशिक्षण ऑडियो फ़ाइलें {00000000-0000-0000-0000-0000000000000000} \ के लिए रजिस्ट्री प्रविष्टियाँ बनाता

कोड द्वारा बनाई गई रजिस्ट्री प्रविष्टियों को वहां रखा जाना चाहिए?

ऐसा करने का कारण यह है कि मैं अपनी स्वयं की WAV फ़ाइलों और शब्दों और वाक्यांशों की सूची के साथ कस्टम ट्रेन करना चाहता हूं, फिर सभी अन्य सिस्टम में स्थानांतरित करें।

उत्तर

2

आप कस्टम प्रशिक्षण उत्पन्न SAPI इंजन (नहीं प्रबंधित एपीआई)

यहाँ कैसे करना है पर एक link का उपयोग कर सकते हैं यह (हालांकि थोड़ा अस्पष्ट)

4

यह निश्चित रूप से सी # का उपयोग कर SAPI प्रशिक्षित करने के लिए संभव है। आप सी # से प्रशिक्षण मोड API को एक्सेस करने SAPI के चारों ओर speechlib रैपर का उपयोग कर सकते .Here @Eric Brown answered the procedure

  • एक inproc पहचानकर्ता बनाएं & उचित ऑडियो इनपुट बाँध।
  • सुनिश्चित करें कि आप अपनी पहचान के लिए ऑडियो बनाए रख रहे हैं; आपको बाद में इसकी आवश्यकता होगी।
  • ट्रेन के लिए पाठ युक्त व्याकरण बनाएं।
  • पहचान होने पर पहचानकर्ता को रोकने के लिए व्याकरण की स्थिति सेट करें। (यह एक ऑडियो फ़ाइल से प्रशिक्षण के साथ, साथ ही मदद करता है।)

    जब एक मान्यता होती है:

  • पहचाने गए पाठ और बनाए रखा ऑडियो प्राप्त करें।

  • CoCreateInstance (CLSID_SpStream) का उपयोग कर स्ट्रीम ऑब्जेक्ट बनाएं।
  • ISPRecognizer :: GetObjectToken, और ISpObjectToken :: GetStorageFileName का उपयोग करके एक प्रशिक्षण ऑडियो फ़ाइल बनाएं, और इसे स्ट्रीम (आईएसपीस्ट्रीम :: बाइंडोफाइल का उपयोग करके) से बांधें।
  • बनाए गए ऑडियो को स्ट्रीम ऑब्जेक्ट में कॉपी करें।
  • आईएसपीट्रांस्क्रिप्ट इंटरफ़ेस के लिए स्ट्रीम ऑब्जेक्ट QI स्ट्रीम करें और स्ट्रीम में मान्यता प्राप्त टेक्स्ट जोड़ने के लिए ISPTranscript :: AppendTranscript का उपयोग करें।
  • अगले उच्चारण के लिए व्याकरण अपडेट करें, पहचानकर्ता को फिर से शुरू करें, और जब तक आप प्रशिक्षण पाठ से बाहर न हों तब दोहराएं।

दूसरे विकल्प के वांछित उत्पादन के साथ एक बार sapi प्रशिक्षण किया जा सकता है, तो कोड के साथ प्रोफाइल पाने और अन्य प्रणालियों के लिए परिवहन, निम्न कोड देता है एक ISpeechObjectTokens आपत्ति .:

GetProfiles विधि एक रिटर्न उपलब्ध उपयोगकर्ता भाषण प्रोफाइल का चयन। प्रोफ़ाइल को टोकन की श्रृंखला के रूप में भाषण कॉन्फ़िगरेशन डेटाबेस में संग्रहीत किया जाता है, प्रत्येक टोकन एक प्रोफ़ाइल का प्रतिनिधित्व करता है। GetProfiles सभी उपलब्ध प्रोफाइल टोकन पुनर्प्राप्त करता है। लौटाई गई सूची एक ISpeechObjectTokens ऑब्जेक्ट है। अतिरिक्त या अधिक टोकन के बारे में विस्तृत जानकारी ISpeechObjectTokens से जुड़े विधियों विधियों में उपलब्ध है। टोकन खोज आवश्यक एट्रिब्यूट्स और वैकल्पिक एट्रिब्यूट्स खोज विशेषताओं का उपयोग करके परिष्कृत हो सकती है। निर्दिष्ट आवश्यक एट्रिब्यूट खोज गुणों से मेल खाने वाले टोकन केवल लौटाए जाते हैं। से मेल खाने वाले उन टोकनों में से आवश्यक एट्रिब्यूट्स कुंजी, वैकल्पिक एट्रिब्यूट्स मिलान वैकल्पिक विकल्प में डिवाइस सूचीबद्ध करता है। यदि कोई खोज विशेषता नहीं दी जाती है, तो सभी टोकन लौटाए जाते हैं। यदि कोई ऑडियो डिवाइस मानदंड से मेल नहीं खाता है, GetAudioInputs एक खाली चयन देता है, यानी ISpeechObjectTokens संग्रह ISpeechObjectTokens :: गणना शून्य की संपत्ति के साथ। See Object Tokens and Registry Settings White Paper for a list of SAPI 5-defined attributes

Public SharedRecognizer As SpSharedRecognizer 
Public theRecognizers As ISpeechObjectTokens 

Private Sub Command1_Click() 
    On Error GoTo EH 

    Dim currentProfile As SpObjectToken 
    Dim i As Integer 
    Dim T As String 
    Dim TokenObject As ISpeechObjectToken 
    Set currentProfile = SharedRecognizer.Profile 

    For i = 0 To theRecognizers.Count - 1 
     Set TokenObject = theRecognizers.Item(i) 

     If tokenObject.Id <> currentProfile.Id Then 
      Set SharedRecognizer.Profile = TokenObject 
      T = "New Profile installed: " 
      T = T & SharedRecognizer.Profile.GetDescription 
      Exit For 
     Else 
      T = "No new profile has been installed." 
     End If 
    Next i 

    MsgBox T, vbInformation 

EH: 
    If Err.Number Then ShowErrMsg 
End Sub 

Private Sub Form_Load() 
    On Error GoTo EH 

    Const NL = vbNewLine 
    Dim i, idPosition As Long 
    Dim T As String 
    Dim TokenObject As SpObjectToken 

    Set SharedRecognizer = CreateObject("SAPI.SpSharedRecognizer") 
    Set theRecognizers = SharedRecognizer.GetProfiles 

    For i = 0 To theRecognizers.Count - 1 
     Set TokenObject = theRecognizers.Item(i) 
     T = T & TokenObject.GetDescription & "--" & NL & NL 
     idPosition = InStrRev(TokenObject.Id, "\") 
     T = T & Mid(TokenObject.Id, idPosition + 1) & NL 
    Next i 

    MsgBox T, vbInformation 

EH: 
    If Err.Number Then ShowErrMsg 
End Sub 

Private Sub ShowErrMsg() 

    ' Declare identifiers: 
    Dim T As String 

    T = "Desc: " & Err.Description & vbNewLine 
    T = T & "Err #: " & Err.Number 
    MsgBox T, vbExclamation, "Run-Time Error" 
    End 

End Sub 
संबंधित मुद्दे