A questo punto farei un riassunto del necessario per poter far funzionare la Microsoft.Speech:
Scaricare ed installare
Microsoft Speech SDK 11 (versione x86 o x64)
Scaricare ed installare il
Language Pack in lingua italiano MSSpeech_SR_it-IT_TELE.msi e nel caso si voglia anche il tts "Lucia" (MSSpeech_TTS_it-IT_Lucia.msi) per far "parlare" il pc
Andare in *programmi*(x86 o x64 in base a che SDK 11 si è scelto)\Micosoft SDKs\Speech\v11.0\Redist e far girare il runtime SpeechPlatformRuntime.msi (più che altro utile quando si distribuisce il programma)
creare un nuovo progetto console (net framework 4.8 ), aggiungere il riferimento alla dll Microsoft.Speech.dll che si trova in *programmi*(x86 o x64 in base a che SDK 11 si è scelto)\Microsoft SDKs\Speech\v11.0\Assembly
copiare il codice di esempio :
using System;
using Microsoft.Speech.Recognition;
namespace SpeechRecognition
{
class Program
{
static void Main(string[] args)
{
using (
SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(
new System.Globalization.CultureInfo("it-IT")))
{
GrammarBuilder test = new GrammarBuilder("prova");
Grammar testGrammar = new Grammar(test);
testGrammar.Name = "Prova";
recognizer.LoadGrammarAsync(testGrammar);
// Add a handler for the speech recognized event.
recognizer.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
// Configure input to the speech recognizer.
recognizer.SetInputToDefaultAudioDevice();
// Start asynchronous, continuous speech recognition.
recognizer.RecognizeAsync(RecognizeMode.Multiple);
// Keep the console window open.
while (true)
{
Console.ReadLine();
}
}
}
// Handle the SpeechRecognized event.
static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine($"Recognized text: {e.Result.Text} confidence: {e.Result.Confidence}");
}
}
}
Avviare e dire al microfono "prova", il programma risponderà scrivendo in console "Recognized text: prova confidence: XXXXXX", questo perché è l'unica cosa che è istruito a fare. Per dettati e altri comandi ovviamente va predisposto.
In caso di problemi controllare se la lingua di sistema corrisponde all'italiano, per altri problemi meglio chiedere, avolte ci si può dimenticare qualche passaggio...