Domanda Problemi con system.speech.recognition

  • domenica 8 gennaio 2012 11:47
     
     

    salve a tutti,

    voglio realizzare un programma che risponde a dei comandi vocali. Ho installato le Sapi  e poi ho importato la System.Speech.dll; quando provo a far pronunciare la frase al computer funziona, ma il problema viene quando tento di attivare la funzionalità di riconoscimento vocale di windows. posto un'immagine con l'errore e il codice.

    Premetto che ho windows 7 ultimate sp1 e uso il net framework 3.5, lingua di visualizzazione italiana. Grazie in anticipo per l'aiuto

    immagine

Tutte le risposte

  • domenica 8 gennaio 2012 12:28
    Moderatore
     
     

    salve a tutti,

    voglio realizzare un programma che risponde a dei comandi vocali. Ho installato le Sapi  e poi ho importato la System.Speech.dll; quando provo a far pronunciare la frase al computer funziona, ma il problema viene quando tento di attivare la funzionalità di riconoscimento vocale di windows. posto un'immagine con l'errore e il codice.

    Premetto che ho windows 7 ultimate sp1 e uso il net framework 3.5, lingua di visualizzazione italiana. Grazie in anticipo per l'aiuto

    immagine


    Ciao, Speech recognition è disponibile solo per le localizzazioni inglese, spagnolo, francese e tedesco di Windows. Se utilizzi System.Speech, che fa parte di WPF, non hai bisogno di installare anche le SAPI.

    Circa l'eccezione, dovresti mostrare i dettagli perchè mostrare il solo messaggio generico è di poco aiuto.


    Alessandro Del Sole
    Microsoft MVP - Visual Basic: development
    http://community.visual-basic.it/alessandro/
  • domenica 8 gennaio 2012 13:08
     
      Contiene codice

    Ciao!

    Se hai Windows 7 in italiano, per abilitare il riconoscimento vocale per la lingua inglese, assicurati di aver installato il relativo Language Pack attraverso Windows Update.

    Detto questo, per quanto riguarda l'eccezione che ottieni, prova ad aggiungere la seguente istruzione:

    recognizer.SetInputToDefaultAudioDevice()
    

    Subito dopo l'istanziazione della variabile recognizer. Essa specifica qual è la sorgente da utilizzare per ottenere l'audio da riconoscere: in particolare, in questo caso indica che la sorgente è la periferica di input audio predefinita del sistema.


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • domenica 8 gennaio 2012 13:17
     
     

    salve,

    si utilizzo WPF. Il problema credo sia proprio questo della lingua perche ho provato a scaricare degli esempi gia compilati da internet e non funzionano. 

    ecco i dettagli dell'errore comunque:

    System.Runtime.InteropServices.COMException non è stata gestita

      ErrorCode=-2147467259

      Message=Errore HRESULT E_FAIL restituito da una chiamata a un componente COM.

      Source=System.Speech

     

     

  • domenica 8 gennaio 2012 13:45
    Moderatore
     
     

    salve,

    si utilizzo WPF. Il problema credo sia proprio questo della lingua perche ho provato a scaricare degli esempi gia compilati da internet e non funzionano. 

    ecco i dettagli dell'errore comunque:

     

    System.Runtime.InteropServices.COMException non è stata gestita

      ErrorCode=-2147467259

      Message=Errore HRESULT E_FAIL restituito da una chiamata a un componente COM.

      Source=System.Speech

     

     

     


    Qualche anno fa scrissi questo articolo per il Visual Basic Developer Center:

    http://msdn.microsoft.com/en-us/library/dd148511.aspx

    Trascura il fatto che sia applicato a un add-in per Word, il codice è per WPF. Prova a vedere se magari in qualche modo ti può tornare utile.


    Alessandro Del Sole
    Microsoft MVP - Visual Basic: development
    http://community.visual-basic.it/alessandro/
  • domenica 8 gennaio 2012 13:48
     
     
    grazie a entrambi! appena ho tempo provo e vi faccio sapere!
  • domenica 8 gennaio 2012 17:31
     
     

    Di nulla :-)

    Tienici informati!


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • giovedì 19 gennaio 2012 15:59
     
      Contiene codice

    Di nulla :-)

    Tienici informati!


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom

    ciao, scusatemi se mi intrometto .. ma ho lo stesso problema.. solo che io uso Windows 7 home premium a 64 bit in italiano...

    Come diceva marco che per farlo funzionare nel sistema italiano c'è da inserire quel codice che hai postato..

    solo che io.. nel mio  codice di prova che ho trovato in questo sito:

    http://studentguru.gr/b/vangos/archive/2010/03/21/c-text-to-speech-amp-voice-recognition.aspx

    il demo sta qui:

    http://studentguru.gr/blogs/vangos/WindowsSpeechAPI/Demos.zip

    http://studentguru.gr/blogs/vangos/WindowsSpeechAPI/Slides.zip

     

    per chi non si sa muovere nei siti che hanno lingua strana.. solo che il codice è sempre in inglese e meno male...

    mi dite perché non va?

    l'errore mi dice questo:

    System.PlatformNotSupportedException: Nessun riconoscimento installato. 
       in System.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer recognizer, Boolean inproc)
       in System.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()
       in System.Speech.Recognition.SpeechRecognitionEngine.SetInputToDefaultAudioDevice()
       in VoiceRecognitionGame.MainWindow.ButtonRecognizeVoice_Click(Object sender, RoutedEventArgs e) in d:\KITT_Simulator\Demos\VoiceRecognitionGame\VoiceRecognitionGame\MainWindow.xaml.cs:riga 114
       in System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
       in System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
       in System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
       in System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
       in System.Windows.Controls.Primitives.ButtonBase.OnClick()
       in System.Windows.Controls.Button.OnClick()
    


    come mai?

    grazie mille.

     

     

  • giovedì 19 gennaio 2012 16:33
     
     

    Il riconoscimento vocale viene installato solo nel sistema operativo è presente una delle lingue supportate. Poiché tu hai la versione italiana, per abilitare il riconoscimento vocale, dovresti avere almeno il language pack per la lingua inglese, che però non può essere installato sulla versione Home Premium di Windows 7 (ma solo sulla Ultimate e sulla Enterprise).


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
  • giovedì 19 gennaio 2012 16:53
     
     

    Il riconoscimento vocale viene installato solo nel sistema operativo è presente una delle lingue supportate. Poiché tu hai la versione italiana, per abilitare il riconoscimento vocale, dovresti avere almeno il language pack per la lingua inglese, che però non può essere installato sulla versione Home Premium di Windows 7 (ma solo sulla Ultimate e sulla Enterprise).


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    grazie mille. ma se acquisto o meglio mi faccio comprare una copia di windows home premium in inglese..da un mio amico che in estate va a lavoro a los angeles e dopo lo posso installare qui in italia con il codice originale quello americano?

    ha scordavo almeno quello c'è il riconoscimento vocale?

    grazie.


    • Modificato GigiCS giovedì 19 gennaio 2012 16:55
    •  
  • giovedì 19 gennaio 2012 17:02
     
     
    Sì, lo puoi tranquillamente installare, e la versione Home Premium include il riconoscimento vocale, come descritto qui: http://windows.microsoft.com/en-US/windows-vista/products/features/productivity.
    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva