Archief - c# speech recognition

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fartbunny

Legacy Member
I ben bezig met een klein projectje waar ik wat spraakherkenning zou willen implementeren, heb al enkele voorbeelden van microsoft bekeken maar zit telkens met een foutmelding "A first chance exception of type 'System.PlatformNotSupportedException' occurred in System.Speech.dll

Additional information: Er is geen herkenner geïnstalleerd. "

heb dus wat zitten opzoeken en blijkt nu dat dit komt omdat ik met een nederlandstalige versie van windows 7 zit (nl is niet ondersteund als speech recognition taal)

nu dacht ik: geen probleem, ik spreek er gewoon engels tegen en dan is het opgelost.. maar ik kan nergens vinden hoe ik in C# de taal aanpas van mijn recognizer..
je zou dit kunnen doen in windows zelf door de taal te veranderen naar engels maar dit lukt niet omdat het geen ultimate of enterprise edition is..

Iemand hier ervaring mee?

Code:
        private void Radio_Load(object sender, EventArgs e)
        {
            SpeechRecognizer sr = new SpeechRecognizer();
            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;
            this.TopMost = true;
            this.Visible = false;

            Choices radios = new Choices();
            radios.Add(new string[] { "studio", "restaurant", "nothing" });

            GrammarBuilder gb = new GrammarBuilder();
            gb.Append(radios);

            // Create the Grammar instance.
            Grammar g = new Grammar(gb);

            sr.LoadGrammar(g);
            sr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_SpeechRecognized);
        }

     void sr_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            MessageBox.Show(e.Result.Text);
        }

Jerre Muesli

Legacy Member
Als ik een gok mag wagen dan zou ik zeggen dat ge .Net Framework 4.5 nog niet hebt.

fartbunny

Legacy Member
nee is geïnstalleerd.. (heb hem nogmaals gedownload om zeker te zijn en vraagt om te herstellen of te verwijderen, dus veronderstel dat hij geïnstalleerd is)

Tyfius

Legacy Member
Dat heeft inderdaad niets met het .NET framework te maken. Die Speech Recognition zit er al in sinds 3.0 ofzo.

Oplossing: een SpeechRecognitionEngine gebruiken en daar uw culture aan meegeven. Op die pagina staat ook een sample.

fartbunny

Legacy Member
thx, heb de voorbeeld eens uitgeprobeerd maar krijg nu de foutmelding
"An unhandled exception of type 'System.ArgumentException' occurred in System.Speech.dll
Additional information: Er is geen herkenner met de vereiste ID gevonden."
de references staan nochtans goed...

via google vond ik dat ik dit nog nodig had:Microsoft Unified Communications Managed API 3.0 Software Development Kit.. ga deze nog eens installeren en zien wat het geeft..

update: UCM werkt niet op VS2013.. heb dan maar VS2010 terug geïnstalleerd, probeer nu met SpeechRecognitionEngine te werken maar krijg al een error bij één van de eerste regels:
Code:
 SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));

System.NullReferenceException was unhandled
HResult=-2147467261
Message=De objectverwijzing is niet op een exemplaar van een object ingesteld.
Source=System.Speech
StackTrace:
bij System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers()
bij System.Speech.Recognition.SpeechRecognitionEngine..ctor(CultureInfo culture)
bij ConsoleApplication2.Program.Main(String[] args) in c:\users\hoofdgebruiker\documents\visual studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs:regel 14
bij System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
bij System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
bij Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bij System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bij System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bij System.Threading.ThreadHelper.ThreadStart()
InnerException:

begrijp er niets meer van

Tyfius

Legacy Member
Ik heb een vermoeden, maar ik kan het niet bevestigen.

Volgens mij moeten gebruikers (en dus jij ook) de benodigde Speech Recognizer geïnstalleerd hebben staan. Ik zie aan je foutmelding dat jij een Nederlandstalige Windows versie gebruikt. Waarschijnlijk is het Engelse taalpakket dan niet geïnstalleerd. Ik weet niet welke OS versie je gebruikt, maar in Windows 7 Ultimate kan je als gebruiker andere talen installeren. In lagere versies is dat niet altijd mogelijk en kan je dus een probleem hebben.

Maar nogmaals: dit is slechts een vermoeden. Daarvoor ken ik veel te weinig van de Speech Recognizer.

fartbunny

Legacy Member
uw vermoeden is volledig juist (denk ik).. heb alle speechRecognizers geïnstalleerd die ik vond maar niets hielp.. heb dan een Windows 7 Ultimate Engelse versie geïnstalleerd op een oude laptop en daar werkt alles perfect.. het probleem is dat Visual Studio effectief de windows voice recognizer gebruikt (en die moet ook aanliggen) en niet gewoon gebruik maakt van de library ervan..) en omdat je in de nederlandstalige versie geen toegang hebt tot de voice command (en ook geen mogelijkheid hebt ertoe door je taal te veranderen) krijg je telkens een foutmelding..
Zal dus ofwel een upgrade moeten doen ofwel op die trage laptop verder werken :s alleszinds thx!

Recipe4hate

Legacy Member
fartbunny zei:
uw vermoeden is volledig juist (denk ik).. heb alle speechRecognizers geïnstalleerd die ik vond maar niets hielp.. heb dan een Windows 7 Ultimate Engelse versie geïnstalleerd op een oude laptop en daar werkt alles perfect.. het probleem is dat Visual Studio effectief de windows voice recognizer gebruikt (en die moet ook aanliggen) en niet gewoon gebruik maakt van de library ervan..) en omdat je in de nederlandstalige versie geen toegang hebt tot de voice command (en ook geen mogelijkheid hebt ertoe door je taal te veranderen) krijg je telkens een foutmelding..
Zal dus ofwel een upgrade moeten doen ofwel op die trage laptop verder werken :s alleszinds thx!

Heb je hier nog updates rond? Ik heb er zelf een beetje mee aan het spelen en ben dus zeer geïnteresseerd in je project :-)

Edit: gisteren gespeeld met de SpeechRecognitionEngine en ik moet zeggen dat dit wel heel erg goed werkt. Soms denkt de engine wel iets te snel dat hij een goed woord gevonden heeft, maar dat is meestal met veel ruis.

Racemaniac

Legacy Member
toen ik ermee speelde en zo'n exception kreeg, was dat omdat ik recognition probeerde te doen in een taal die niet geinstalleerd was. en alleszins bij windows 8 moet ge enterpise edition hebben om andere talen te kunnen installeren dan de default taal van uw windows
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan