domenica 29 maggio 2016

Dettatura in italiano con Cortana

Sebbene quella del riconoscimento vocale sia ormai una tecnologia mainstream, il suo utilizzo è ancora piuttosto scarso a causa di un limite culturale o, più probabilmente, per la mancanza di interfacce vocali ben fatte.
Android e Apple Ios hanno i propri sistemi di dettatura integrati così come Windows, ma fino a Windows 7 l'unico modo per dettare in Italiano con i sistemi operativi Microsoft era installare un software commerciale come Dragon NaturallySpeaking.
Con Cortana e Windows 10 siamo passati alla seconda generazione dei motori di riconoscimento vocale, grazie all'utilizzo di modelli basati sulle reti neurali profonde (DNN).
Microsoft ha reso disponibile il riconoscimento vocale in decine di lingue, ma mancano le applicazioni che lo utilizzano tant'è che a oggi è possibile solamente dettare degli SMS con Windows phone oppure rivolgere delle domande a Cortana. Dettare delle email o un documento in Word è possibile in potenza ma di fatto manca ancora l'integrazione con Cortana.
Eppure le API ci sono. Basta avere Windows 10 e un collegamento a internet perché Cortana trascriva la nostra voce in tempo reale.
Le API di Cortana sono API WinRT, cioè pensate per le App Windows Store ma, esattamente come descritto nel post per le API OCR, è possibile utilizzarle in una normale applicazione desktop.
Qui un semplice progetto WPF che integra le API Windows.Media.SpeechRecognition con cui potrete giudicare l'accuratezza di Cortana.
Richiede Windows 10, l'accesso a Internet e l'input audio microfonico.
Quando terminate di parlare premete il pulsante Stop altrimenti il sistema produrrà un Timeout.
E qui l'esempio ufficiale di Microsoft

Update 23/06/2017: addin Office per la dettatura

2 commenti:

  1. Si può fare una semplice implementazione per usare il sistema come dettatura verso altri programmi in Windows Desktop.
    Per fare questo è sufficiente:
    - Aggiungere una checkbox al form e chiamarla chkTypeToKeyboard
    - Importare lo spazio dei nomi System.Windows.Form nel progetto
    - Modificare l'ultima riga della sub InsertText come segue

    if ((bool)chkTypeToKeyboard.IsChecked)
    {
    System.Windows.Forms.SendKeys.SendWait(text);
    }
    else
    {
    Keyboard.Focus(mainRTB);
    }

    Funziona perfettamente!
    Grazie per avere condiviso il progetto.

    Alessandro Bernardi - BBros

    RispondiElimina
  2. Ciao sono molto inesperto di Visual Studio e C#, provando a compilare l'esempio con VS Community 2015 ho l'errore CS0234 The type or namespace 'Media' does not exist in the namespace 'Windows' (are you missing an assembly reference?), e l'errore si ripete per 'ApplicationModel' e 'Globalization' e 'Storage' e 'SpeechRecognizer' e 'Language'e alcuni altri. Come si può rimediare? Grazie.

    RispondiElimina