• A hangfelismerés offline engedélyezése. Beszédfelismerés asztali .NET-alkalmazásokkal Beszédfelismerés offline android

    12.12.2021

    Termékek és technológiák:

    Visual Studio, C#, .NET Speech Libraries

    A cikk a következőkkel foglalkozik:

    • beszédfelismerési támogatás hozzáadása a konzolalkalmazáshoz;
    • felismerhető beszédfeldolgozás;
    • beszédfelismerési célú könyvtárak telepítése;
    • a Microsoft.Speech és a System.Speech összehasonlítása;
    • beszédfelismerési támogatás hozzáadása egy Windows Forms alkalmazáshoz.

    A Windows Phone Cortana, a beszéddel aktiválható személyi asszisztens (valamint a gyümölcscégek megfelelője, amit nem szabad hiába emlegetni) megjelenésével a szoftverfejlesztés egyre fontosabb részeivé váltak a beszédképes alkalmazások. Ebben a cikkben bemutatom, hogyan kezdje meg a beszédfelismerést és -szintézist a Windows konzolalkalmazásokban, a Windows Forms alkalmazásokban és a Windows Presentation Foundation (WPF) alkalmazásban.

    Ne feledje, hogy beszédképességeket is hozzáadhat a Windows Phone-alkalmazásokhoz, az ASP.NET-webalkalmazásokhoz, a Windows Store-alkalmazásokhoz, a Windows RT-hez és az Xbox Kinecthez, de ezek a technikák eltérnek a cikkben leírtaktól.

    Jó módja annak megértésére, hogy pontosan miről lesz szó ebben a cikkben, ha megnézi a két különböző demóprogram képernyőképét: rizs. egyés 2 . A konzolalkalmazás elindítása után rizs. egy azonnal kimondja az "ébren vagyok" kifejezést. Természetesen ennek a cikknek a olvasása közben nem fogja hallani a bemutatóalkalmazást, ezért megjeleníti a számítógép által elmondottak szövegét. A felhasználó ezután kimondja a „Beszéd be” parancsot. A demóalkalmazás felismert szöveggel válaszol, majd belsőleg figyel és válaszol a két szám hozzáadására vonatkozó kérésekre.

    Rizs. 1. Beszédfelismerés és szintézis konzolalkalmazásban


    Rizs. 2. Beszédfelismerés a Windows Forms alkalmazásban

    A felhasználó arra kérte az alkalmazást, hogy adjon hozzá egyet és kettőt, majd kettőt és hármat. Az alkalmazás felismerte a kimondott parancsokat, és hangos módon adott válaszokat. Később a beszédfelismerés használatának hasznosabb módjait ismertetem.

    Ezután a felhasználó azt mondta: "Beszéd kikapcsolva", egy hangutasítás, amely kikapcsolja a számok hozzáadására szolgáló parancsok meghallgatását, de nem kapcsolja ki teljesen a beszédfelismerést. Ezt a szóbeli parancsot követően a következő, egy és kettő hozzáadására vonatkozó parancsot figyelmen kívül hagyta. Végül a felhasználó újra engedélyezte a parancsok figyelését, és kimondta az értelmetlen „Klatu barada nikto” parancsot, amelyet az alkalmazás a beszédfelismerés teljes deaktiválására és önmaga leállítására szolgáló parancsként ismert fel.

    A rizs. 2 egy Windows Forms alkalmazást mutat be, amelyben engedélyezve van az álbeszéd. Ez az alkalmazás felismeri a kimondott parancsokat, de nem válaszol rájuk hangkimenettel. Az alkalmazás első indításakor a Speech On jelölőnégyzet nem volt bejelölve, ami azt jelzi, hogy a beszédfelismerés nem volt aktív. A felhasználó bejelölte ezt a négyzetet, majd azt mondta: „Helló”. Az alkalmazás válaszul megjelenítette a felismert szöveget egy ListBox vezérlőben az ablak alján.

    A felhasználó ezután azt mondta: "Állítsa be az 1-es szövegmezőt pirosra". Az alkalmazás felismerte a beszédet, és "Set text box 1 red" (1. szövegmező beállítása pirosra) válaszolt, ami majdnem (de nem egészen) pontosan az, amit a felhasználó mondott. Bár tovább rizs. 2 nem látod, az ablak tetején lévő TextBox vezérlőben tényleg piros a szöveg.

    Ezután a felhasználó azt mondta: "Kérem, állítsa az 1-es szövegmezőt fehérre". Az alkalmazás ezt "1. fehér szövegdoboznak" ismerte fel, és ezt tette. Végül a felhasználó azt mondta, hogy viszlát, és az alkalmazás megjelenítette ezt a szöveget, de nem tett semmit a Windows Forms-szal, bár például törölni tudta a Speech On jelzőt.

    A szintetizátor objektum használata meglehetősen egyszerű.

    A következő szakaszokban végigvezetem mindkét bemutatóprogram létrehozásának folyamatán, beleértve a szükséges .NET beszédkönyvtárak telepítését is. Ez a cikk feltételezi, hogy legalább középfokú programozási készségekkel rendelkezik, de a beszédfelismerésről és a szintézisről semmit.

    Beszédfelismerési támogatás hozzáadása konzolalkalmazáshoz

    A bemutatott demó létrehozásához rizs. egy, Beindítottam a Visual Studio-t, és létrehoztam egy új C# konzolalkalmazást ConsoleSpeech néven. Sikeresen használtam a beszédeszközöket a Visual Studio 2010-ben és 2012-ben, de bármelyik viszonylag friss verziónak működnie kell. Miután betöltöttem a sablonkódot a szerkesztőbe, átneveztem a Program.cs fájlt a Solution Explorer ablakban a leíróbb ConsoleSpeechProgram.cs-ra, a Visual Studio pedig átnevezte nekem a Program osztályt.

    Ezután hozzáadtam egy hivatkozást a Microsoft.Speech.dll fájlra, amely a C:\ProgramFiles (x86)\Microsoft SDKs\Speech\v11.0\Assembly mappában található. Ez a DLL hiányzott a számítógépemről, ezért le kellett töltenem. A beszédfelismerés és -szintézis alkalmazáshoz való hozzáadásához szükséges fájlok telepítése nem annyira triviális. A következő részben részletesen elmagyarázom a telepítési folyamatot, de most tegyük fel, hogy Microsoft.Speech.dll van a rendszeren.

    A beszéd DLL-re való hivatkozás hozzáadásával eltávolítottam az összes használó utasítást a kód tetejéről, kivéve a rendszer névterére mutató legfelső szintű utasítást. Utána a Microsoft.Speech.Recognition, Microsoft.Speech.Synthesis és System.Globalization névterekhez utasításokkal adtam hozzá. Az első két névtér a beszéd DLL-hez van leképezve. Vegye figyelembe, hogy léteznek névterek is, például System.Speech.Recognition és System.Speech.Synthesis, amelyek zavaróak lehetnek. Hamarosan elmagyarázom a köztük lévő különbséget. A Globalizáció névtér alapértelmezés szerint elérhető volt, és nem kellett hozzá új hivatkozást hozzáadni a projekthez.

    A demo konzolalkalmazás teljes forráskódja megtalálható a címen rizs. 3, és a cikkhez mellékelt forráscsomagban is elérhető. Eltávolítottam az összes szokásos hibakezelést, hogy lehetőleg ne takarjam el a főbb gondolatokat.

    Rizs. 3. A demókonzol alkalmazás forráskódja

    Rendszer használata; a Microsoft.Speech.Recognition használatával; a Microsoft.Speech.Synthesis használatával; a System.Globalization használatával; névtér ConsoleSpeech ( osztály ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); statikus beszédfelismerő motor ("\n(Beszéd: ébren vagyok)"); ss.Speak("Ébren vagyok"); CultureInfo ci = new CultureInfo("en-us"); sre = new SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice( ); sre.SpeechRecognized += sre_SpeechRecognized; Választási lehetőségek ch_StartStopCommands = new Choices(); ch_StartStopCommands.Add("beszéd"); ch_StartStopCommands.Startnikd("Speech_Startnikla"Sbmarttunik"Grabbo = new GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); Nyelvtan g_StartStop = new Grammar(gb_StartStop); Választási lehetőségek ch_Numbers = new Choices(); ch_Numbers.Add("1"); ch_Numbers.Add_"2"); Add("3"); ch_Numbers.Add("4"); GrammarBuilder gb_WhatI sXplusY = new GrammarBuilder(); gb_WhatIsXplusY.Append("Mi az"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.Append(ch_Numbers); Nyelvtan g_WhatIsXplusY = new Nyelvtan(gb_WhatIsXplusY); sre.LoadGrammarAsync(g_StartStop); sre.LoadGrammarAsync(g_WhatIsXplusY); sre.RecognizeAsync(RecognizeMode.Multiple); while (done == false) ( ; ) Console.WriteLine("\nTalálat< enter >shell bezárásához\n"); Console.ReadLine(); ) catch (Kivétel kivétel) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) ) // Fő statikus void sre_SpeechRecognized(objektum küldő, SpeechRecognizedEventArgs e ) ( string txt = e.Result.Text; float bizalom = e.Result.Confidence; Console.WriteLine("\nFelismerve: " + txt); if (bizalom< 0.60) return; if (txt.IndexOf("speech on") >= 0) ( Console.WriteLine("A beszéd be van kapcsolva"); voiceOn = igaz; ) if (txt.IndexOf("beszéd ki") >= 0) ( Console.WriteLine("A beszéd most KI"); voiceOn = false; ) if (speechOn == false) return; if (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) ( ((SpeechRecognitionEngine)sender).RecognizeAsyncCancel(); done = true; Console.WriteLine("(Beszéd: Búcsú)"); ss.Speak("Búcsú"); ) if (txt.IndexOf("Mi") >= 0 && txt.IndexOf("plus") >= 0) ( karakterláncszavak = txt.Split(" "); int num1 = int.Parse(words); int num2 = int.Parse(words); int sum = num1 + num2; Console.WriteLine("(Beszéd: " + szavak + " plusz " + szavak + " egyenlő " + sum + ")"); ss.SpeakAsync(szavak + " plusz " + szavak + " egyenlő " + összeg); ) ) // sre_SpeechRecognized ) // Program ) // ns

    A use utasítások után a demo kód így kezdődik:

    névtér ConsoleSpeech ( osztály ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); statikus SpeechRecognitionEngine sre; static bool kész = false; static bool voiceOn = igaz; static void Main(karakterlánc) ( ...

    Az osztályszintű SpeechSynthesizer objektum lehetővé teszi az alkalmazások számára, hogy beszédet szintetizáljanak. A SpeechRecognitionEngine objektum lehetővé teszi az alkalmazások számára, hogy meghallgassák és felismerjék a kimondott szavakat vagy kifejezéseket. A kész logikai változó határozza meg, hogy az alkalmazás egésze mikor ér véget. A voiceOn logikai változó azt szabályozza, hogy az alkalmazás figyeljen-e más parancsokra, mint a programból való kilépés parancsára.

    Az ötlet az, hogy a konzolalkalmazás nem fogadja el a billentyűzet bevitelét, ezért mindig figyel a parancsokra. Ha azonban a beszéd hamis, csak a programból való kilépési parancsot ismeri fel és hajtja végre; a többi parancsot felismeri, de figyelmen kívül hagyja.

    A fő módszer így kezdődik:

    try ( ss.SetOutputToDefaultAudioDevice(); Console.WriteLine("\n(Beszéd: ébren vagyok)"); ss.Speak("Ébren vagyok");

    A SpeechSynthesizer objektum egy példánya a deklaráláskor jött létre. A szintetizátor objektum használata meglehetősen egyszerű. A SetOutputToDefaultAudioDevice metódus kimenetet küld a számítógéphez csatlakoztatott hangszóróknak (a kimenet fájlba is küldhető). A Speak metódus vesz egy karakterláncot, majd kimondja. Így könnyű.

    A beszédfelismerés sokkal nehezebb, mint a szintézise. A Main metódus egy felismerő objektum létrehozásával folytatódik:

    CultureInfo ci = new CultureInfo("en-us"); sre = új SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice(); sre.SpeechRecognized += sre_SpeechRecognized;

    A CultureInfo objektum először meghatározza a felismerendő nyelvet, jelen esetben az egyesült államokbeli angolt. A CultureInfo objektum a Globalization névtérben található, amelyre a using utasítással hivatkoztunk. Ezután a SpeechRecognitionEngine konstruktor meghívása után a hangbemenet hozzá van rendelve az alapértelmezett audioeszközhöz, leggyakrabban a mikrofonhoz. Ne feledje, hogy a legtöbb laptop rendelkezik beépített mikrofonnal, de az asztali számítógépekhez külső mikrofonra lesz szükség (manapság gyakran fejhallgatóval kombinálva).

    A felismerő objektum kulcsmódszere a SpeechRecognized eseménykezelő. A Visual Studio használatakor, ha beírja a „sre.SpeechRecognized +=” parancsot, és vár a másodperc töredékére, az IntelliSense automatikusan a sre_SpeechRecognized eseménykezelő nevével fejezi be a kifejezést. Azt tanácsolom, hogy nyomja meg a Tab billentyűt a javasolt opció elfogadásához, és alapértelmezés szerint használja ezt a nevet.

    Választási lehetőségek ch_Számok = new Choices(); ch_Számok.Hozzáadás("1"); ch_Számok.Hozzáadás("2"); ch_Számok.Hozzáadás("3"); ch_Számok.Hozzáadás("4"); // technikai szempontból // ez az Add(new string ( "4" )); GrammarBuilder gb_WhatIsXplusY = new GrammarBuilder(); gb_WhatIsXplusY.Append("Mi az"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.Append(ch_Numbers); Nyelvtan g_WhatIsXplusY = new Nyelvtan(gb_WhatIsXplusY);

    A három fő objektum itt a Choices készlet, a GrammarBuilder sablon és a vezérlő nyelvtan. Amikor létrehozok egy nyelvtant az elismeréshez, azzal kezdem, hogy felsorolok néhány konkrét példát arra vonatkozóan, hogy mit kell felismernem. Mondja: "Mi az egy plusz kettő?" és "Mi az a három plusz négy?".

    Ezután meghatározom a megfelelő általános mintát, például „Mi az plusz ? A sablon egy GrammarBuilder, és a sablonnak átadott konkrét értékek a választási lehetőségek. A Grammar objektum magába foglalja a sablont és a választási lehetőségeket.

    A demóban az összeadást 1-re korlátozom, és sztringként hozzáadom a Choices készlethez. Hatékonyabb megközelítés:

    string numbers = new string( "1", "2", "3", "4" ); Választási lehetőségek ch_Számok = new Választások(számok);

    Két okból is bemutatok egy kevésbé hatékony megközelítést a választási lehetőségek készletének létrehozására. Először is, egy sor hozzáadása volt az egyetlen megközelítés, amelyet más beszédfelismerő példákban láttam. Másodszor, azt gondolhatja, hogy egy sor hozzáadása egyáltalán nem működik; A Visual Studio IntelliSense valós időben mutatja, hogy az egyik túlterhelés hozzáadása params karakterlánc-kifejezések típusú paramétert vesz igénybe. Ha nem vette észre a params kulcsszót, akkor azt gondolhatta, hogy az Add metódus csak karakterlánc-tömböket fogad el, de egyetlen karakterláncot sem. De ez nem így van: mindkettőt elfogadja. Azt tanácsolom, adj át egy tömböt.

    A választási lehetőségek sorozatának létrehozása egymást követő számokból némileg speciális eset, és lehetővé teszi az olyan programozott megközelítés használatát, mint például:

    string numbers = új karakterlánc; for (int i = 0; i< 100; ++i) numbers[i] = i.ToString(); Choices ch_Numbers = new Choices(numbers);

    A GrammarBuilder helyek feltöltéséhez szükséges választási lehetőségek létrehozása után a demó létrehoz egy GrammarBuildert, majd egy vezérlő nyelvtant:

    GrammarBuilder gb_WhatIsXplusY = new GrammarBuilder(); gb_WhatIsXplusY.Append("Mi az"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.Append(ch_Numbers); Nyelvtan g_WhatIsXplusY = new Nyelvtan(gb_WhatIsXplusY);

    A demóprogram hasonló mintát használ az indításhoz és leállításhoz kapcsolódó parancsok nyelvtanának létrehozásakor:

    Választási lehetőségek ch_StartStopCommands = new Choices(); ch_StartStopCommands.Add("beszéd be"); ch_StartStopCommands.Add("beszéd kikapcsolva"); ch_StartStopCommands.Add("klatu barada nikto"); GrammarBuilder gb_StartStop = new GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); Nyelvtan g_StartStop = new Nyelvtan(gb_StartStop);

    A nyelvtanokat nagyon rugalmasan lehet meghatározni. Itt a "beszéd be", a "beszéd ki" és a "klatu barada nikto" parancsok egy nyelvtanba kerülnek, mivel logikailag összefüggenek. Ez a három parancs három különböző nyelvtanban definiálható, vagy a „beszéd be” és a „beszéd ki” parancsokat az egyik nyelvtanba, a „klatu barada nikto” parancsot pedig a másodikba helyezhetjük.

    Az összes nyelvtani objektum létrehozása után be kell helyezni őket a beszédfelismerőbe, és a beszédfelismerés aktiválódik:

    sre.LoadGrammarAsync(g_StartStop); sre.LoadGrammarAsync(g_WhatIsXplusY); sre.RecognizeAsync(RecognizeMode.Multiple);

    A RecognizeMode.Multiple argumentumra akkor van szükség, ha egynél több nyelvtannal rendelkezik, ami a legegyszerűbb programok kivételével minden esetben így lesz. A fő módszer így végződik:

    While (kész == false) ( ; ) Console.WriteLine("\nTalálat< enter >shell bezárásához\n"); Console.ReadLine(); ) catch (Kivétel kivétel) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) ) // Main

    A furcsa megjelenésű, üres while ciklus a konzolalkalmazás shelljét futva tartja. A ciklus akkor fejeződik be, amikor a beszédfelismerő eseménykezelő az osztályszintű logikai értéket igazra állítja.

    Beszédfelismerés feldolgozás

    A beszédfelismeréssel kapcsolatos események kezelésének kódja így kezdődik:

    static void sre_SpeechRecognized(objektum küldő, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float equid = e.Result.Confidence; Console.WriteLine("\nFelismerve: " + txt); if (bizalom txt);< 0.60) return; ...

    A felismert szöveget a SpeechRecognizedEventArgs objektum Result.Text tulajdonsága tárolja. Alternatív megoldásként használhatja a Result.Words készletet. A Result.Confidence tulajdonság 0,0 és 1,0 közötti értéket tárol, ami egy hozzávetőleges becslés arra vonatkozóan, hogy a kimondott szöveg mennyire felel meg a felismerőhöz társított nyelvtanoknak. A demóprogram arra utasítja az eseménykezelőt, hogy figyelmen kívül hagyja a szöveget, alacsony bizalommal a felismert szövegben.

    A bizalmi értékek nagymértékben függenek a nyelvtan összetettségétől, a mikrofon minőségétől és egyéb tényezőktől. Például, ha a demónak csak az 1-től 4-ig terjedő számokat kell felismernie, akkor a számítógépem megbízhatósági értékei általában 0,75 körül vannak. De ha a nyelvtannak fel kell ismernie az 1 és 100 közötti számokat, a megbízhatósági értékek körülbelül 0,25-re csökkennek. Dióhéjban, általában kísérleteznie kell a megbízhatósági értékekkel, hogy jó beszédfelismerési eredményeket kapjon.

    if (txt.IndexOf("beszéd be") >= 0) ( Console.WriteLine("A beszéd be van kapcsolva"); voiceOn = igaz; ) if (txt.IndexOf("beszéd ki") >= 0) ( Konzol .WriteLine("A beszéd ki van kapcsolva"); voiceOn = false; ) if (speechOn == false) return;

    Bár elsőre talán nem teljesen nyilvánvaló, ennek a logikának értelmet kell adni, ha egyszer belegondolunk. A titkos kilépési parancs ezután feldolgozásra kerül:

    if (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) ( ((SpeechRecognitionEngine)sender).RecognizeAsyncCancel(); done = true; Console.WriteLine("(Beszéd: Búcsú)"); ss.Speak("Búcsú"); )

    Vegye figyelembe, hogy a beszédfelismerő motor valóban képes felismerni az értelmetlen szavakat. Ha egy nyelvtani objektum olyan szavakat tartalmaz, amelyek nem szerepelnek az objektum beépített szótárában, a Grammar megpróbálja azonosítani ezeket a szavakat, amikor csak lehetséges, szemantikai heurisztika segítségével, és ez általában meglehetősen sikeres. Ezért használtam a "klatu"-t a helyes "klaatu" helyett (egy régi sci-fi filmből).

    Azt is vegye figyelembe, hogy nem szükséges a nyelvtan által felismert összes szöveget feldolgoznia ("klatu barada nikto") – csak elegendő információval kell rendelkeznie a nyelvtani kifejezés egyedi azonosításához ("klatu" és "barada").

    If (txt.IndexOf("What") >= 0 && txt.IndexOf("plus") >= 0) ( karakterlánc szavak = txt.Split(" "); int num1 = int.Parse(words); int num2 = int.Parse(words);int sum = num1 + num2;Console.WriteLine("(Beszéd: " + szavak + " plusz " + szavak + " egyenlő " + összeg + ")"); ss.SpeakAsync(words + " plusz " + szavak + " egyenlő " + összeg); ) ) // sre_SpeechRecognized ) // Program ) // ns

    Vegye figyelembe, hogy a Results.Text szövege megkülönbözteti a kis- és nagybetűket ("What" és "What"). A kifejezés felismerése után meghatározott szavakra bontható. Ebben az esetben a felismert szöveg "Mi az x plusz y" formátumú, így a "Mi" szóba kerül, a két hozzáadott szám (karakterláncként) pedig szavakban és szavakban tárolódik.

    Könyvtárak telepítése

    A bemutató program magyarázata feltételezi, hogy az összes szükséges beszédkönyvtár telepítve van a számítógépen. Demóprogramok létrehozásához és futtatásához négy csomagot kell telepíteni: SDK (lehetővé teszi demók létrehozását a Visual Studióban), runtime (demók futtatása a létrehozásuk után), felismert és szintetizált (a program által kimondott) nyelvek.

    Az SDK telepítéséhez keressen a weben a „Speech Platform 11 SDK” kifejezésre. Ezzel a megfelelő oldalra jut a Microsoft letöltőközpontban ( rizs. négy). A Letöltés gombra kattintva láthatja az alábbi opciókat rizs. 5. Az SDK 32 bites és 64 bites változatban érkezik. Erősen javaslom, hogy a 32 bites verziót használja, függetlenül a rendszer bitességétől. A 64 bites verzió nem működik együtt bizonyos alkalmazásokkal.


    Rizs. 4. Az SDK fő telepítési oldala a Microsoft letöltőközpontban


    Rizs. 5. A Speech SDK telepítése

    Nem kell más, csak egyetlen .msi fájl x86 alatt (32 bites rendszerekhez). A fájl kiválasztásával és a Tovább gombra kattintva közvetlenül innen indíthatja el a telepítőt. A beszédkönyvtárak nem adnak sok visszajelzést a telepítés befejezéséről, ezért ne keressen sikerüzeneteket.


    Rizs. 6. A futtatókörnyezet telepítése

    Rendkívül fontos, hogy ugyanazt a platformverziót (11 a demóban) és bitmélységet (32 vagy 64) válasszuk, mint az SDK-t. Ismét nagyon ajánlom a 32 bites verziót, még akkor is, ha 64 bites rendszert használ.

    Ezután beállíthatja a felismerési nyelvet. A letöltési oldal a címen található rizs. 7. A demó az MSSpeech_SR_en-us_TELE.msi (angol-USA) fájlt használja. Az SR a beszédfelismerést, a TELE pedig a telefonálást jelenti; ez azt jelenti, hogy a felismert nyelv gyenge minőségű hangbemenettel működik, például telefonról vagy asztali mikrofonról.


    Rizs. 7. A felismert nyelv beállítása

    Végül beállíthatja a beszédszintézis nyelvét és hangját. A letöltési oldal a címen található rizs. nyolc. A bemutató program az MSSpeech_TTS_en-us_Helen.msi fájlt használja. A TTS (text-to-speech) lényegében a beszédszintézis szinonimája. Jegyezze meg a két elérhető hangot: angol, U.S. Vannak más angol hangok is, de nem amerikaiak. Szintézis nyelvi fájlok létrehozása nagyon nehéz feladat. Azonban számos cégtől vásárolhat és telepíthet más hangokat.


    Rizs. 8. Hang és szintézis nyelv beállítása

    Érdekes módon, bár a beszédfelismerő nyelv és a hang/beszéd szintézis nyelve valójában teljesen különböző dolgok, mindkét csomag ugyanazon a letöltési oldalon található. A Letöltőközpont felhasználói felülete lehetővé teszi a felismerési nyelv és a szintézis nyelv megjelölését is, de az egyidejű telepítés katasztrofálisnak bizonyult, ezért javaslom, hogy külön telepítsd őket.

    A Microsoft.Speech és a System.Speech összehasonlítása

    Ha még nem ismeri a beszédfelismerést és a Windows-alkalmazások szintézisét, könnyen megzavarhatja a dokumentációt, mivel számos beszédplatform létezik. A cikkben szereplő bemutatók által használt Microsoft.Speech.dll könyvtár mellett van egy System.Speech.dll könyvtár is, amely a Windows operációs rendszer része. A két könyvtár hasonló abban az értelemben, hogy API-jaik majdnem, de nem teljesen azonosak. Ha tehát beszédfeldolgozási példákat keres az interneten, és a teljes programok helyett kódrészleteket lát, egyáltalán nem nyilvánvaló, hogy ez a példa a System.Speech vagy a Microsoft.Speech programra vonatkozik-e.

    Ha még nem ismeri a beszédfeldolgozást, használja a Microsoft.Speech könyvtárat a System.Speech helyett a beszédtámogatás hozzáadásához .NET-alkalmazásához.

    Bár mindkét könyvtárnak közös az alapvető kódbázisa és hasonló API-k, határozottan különböznek egymástól. Néhány lényeges különbséget a következő helyen foglalunk össze lapon. egy.

    Tab. 1. Fő különbségek a Microsoft.Speech és a System.Speech között

    A System.Speech DLL az operációs rendszer része, így minden Windows rendszerre telepítve van. A Microsoft.Speech DLL-t (és a hozzá tartozó futási környezeteket és nyelveket) le kell tölteni és telepíteni kell a rendszerre. A System.Speech használatával történő felismerés általában felhasználó-specifikus tanulást igényel, amikor a felhasználó elolvas valamilyen szöveget, és a rendszer megtanulja megérteni a felhasználó kiejtését. A Microsoft.Speech használatával történő felismerés minden felhasználó számára azonnal működik. A System.Speech szinte minden szót képes felismerni (ezt hívják szabad diktálásnak). A Microsoft.Speech csak azokat a szavakat és kifejezéseket ismeri fel, amelyek a programban meghatározott Grammar objektumban vannak.

    Beszédfelismerési támogatás hozzáadása egy Windows Forms alkalmazáshoz

    A beszédfelismerés és szintézis támogatás Windows Forms- vagy WPF-alkalmazásokhoz való hozzáadásának folyamata hasonló a konzolalkalmazásokhoz. A bemutatott bemutató program létrehozásához rizs. 2, Elindítottam a Visual Studio-t, létrehoztam egy új C# Windows Forms alkalmazást, és átneveztem WinFormSpeech-re.

    Miután betöltöttem a sablonkódot a szerkesztőbe, a Solution Explorer ablakban a Microsoft.Speech.dll fájlra való hivatkozást tettem hozzá – ugyanúgy, mint a konzolprogramban. A forráskód tetejéről utasítások segítségével eltávolítottam a feleslegeseket, csak a System, Data, Drawing és Forms névterekre való hivatkozásokat hagytam meg. Ezután hozzáadtam két utasítást a Microsoft.Speech.Recognition és System.Globalization névterekhez.

    A Windows Forms-alapú demó nem használ beszédszintézist, ezért nem hivatkozom a Microsoft.Speech.Synthesis könyvtárra. A beszédszintézis hozzáadása egy Windows Forms alkalmazáshoz ugyanaz, mint a beszédszintézis hozzáadása egy konzolalkalmazáshoz.

    A Visual Studioban tervezési módban a TextBox, CheckBox és ListBox vezérlőket ráhúztam az űrlapra. Duplán kattintottam a CheckBoxra, és a Visual Studio automatikusan generált egy CheckChanged eseménykezelő metódusvázat.

    Emlékezzünk vissza, hogy a demokonzolprogram azonnal elkezdte figyelni a kimondott parancsokat, és addig folytatta, amíg le nem fejezte. Ez a megközelítés a Windows Forms alkalmazásban is alkalmazható, de ehelyett úgy döntöttem, hogy a felhasználó be- és kikapcsolja a beszédfelismerést egy CheckBox vezérlővel (vagyis egy jelölőnégyzet).

    A demó Form1.cs fájljában található forráskód, amelyben a részosztály definiálva van, megjelenik rizs. 9. A beszédfelismerő motor objektumot a rendszer a Form tagjaként deklarálja és példányosítja. A Form konstruktorában csatlakoztatom a SpeechRecognized eseménykezelőt, majd létrehozok és betöltök két Grammars objektumot:

    public Form1 () (inicializeComponent (); sre.setInputTodeFaultIaDevice (); sre.SpeeChReCognized += sre_speechrecognized; Grammar g_hellogoodbye = gethellogoodbyegrammar (); Grammar g_settextbox = getTextbox1TExtgrammar (); SREMGRAMMURMARMARMARMARMARMARMARMARMARMARMAM); / sre.RecognizeAsync() van // a CheckBox eseménykezelőben)

    Rizs. 9. Beszédfelismerési támogatás hozzáadása a Windows űrlapokhoz

    Rendszer használata; a System.Data használatával; a System.Drawing használatával; a System.Windows.Forms használatával; a Microsoft.Speech.Recognition használatával; a System.Globalization használatával; névtér WinFormSpeech ( nyilvános részleges osztály Form1: Form ( static CultureInfo ci = new CultureInfo("en-us"); static SpeechRecognitionEngine sre = new SpeechRecognitionEngine(ci); public Form1() ( InitializeComponent(); sre.SetInputToDevice(AudioDefault); .SpeechRecognized += SRE_SpeechRecognized; Grammar g_hellogoodbye = gethellogoodbyEgrammar (); Grammar g_settextbox = getTextBox1Textgrammar (); Sre.loadgrammarasync (g_hellogoodbye); sre.loadgrammarasync (g_settexbox); kezelő Nyelvtan GetHelloGoodbyeGrammar() ( Choices ch_HelloGoodbye = new Choices(); ch_HelloGoodbye.Add("hello"); ch_HelloGoodbye.Add("goodbye"); GrammarBuilder gb_result =GrammarchmarbyH_uil = GrammarchmarbyH_uil_GrammarchmarbyH_uil return g_result; ) static Grammar GetTextBox1TextGrammar() ( Choices ch_Colors = new Choices(); ch_Colors.Add(new string ( "piros", "fehér", "kék" )); GrammarBuilder gb_r tulemus = new GrammarBuilder(); gb_result.Append("set text box 1"); gb_result.Append(ch_Colors); Nyelvtan g_eredmény = new Nyelvtan(gb_eredmény); return g_result; ) private void checkBox1_CheckedChanged(object sender, EventArgs e) ( if (checkBox1.Checked == true) sre.RecognizeAsync(RecognizeMode.Multiple); else if (checkBox1.Checked == false) // a felismerés letiltva(syncCzel); void sre_SpeechRecognized(objektum küldő, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; if (conf< 0.65) return; this.Invoke(new MethodInvoker(() =>( listBox1.Items.Add("Hallottam, hogy ezt mondtad: " + txt); ))); // A WinForm specifikumai if (txt.IndexOf("text") >= 0 && txt.IndexOf("box") >= 0 && txt.IndexOf("1")>= 0) ( karakterláncszavak = txt.Split( " "); this.Invoke(new MethodInvoker(() => ( textBox1.Text = szavak; ))); // WinForm-specifikus ) ) ) // Form ) // ns

    Közvetlenül létrehozhattam két Grammar objektumot, mint egy konzolprogramban, de ehelyett, hogy egy kicsit áttekinthetőbb legyen a kód, két segédmetódust (GetHelloGoodbyeGrammar és GetTextBox1TextGrammar) definiáltam, amelyek elvégzik a feladatot.

    static Grammar GetTextBox1TextGrammar() ( Choices ch_Colors = new Choices(); ch_Colors.Add(new string ( "piros", "fehér", "kék" )); GrammarBuilder gb_result = new GrammarBuilder(); Append("result text. box 1"); gb_result.Append(ch_Colors); Nyelvtan g_result = new Grammar(gb_result); return g_result; )

    Ez a segítő módszer felismeri a "szövegdoboz 1 piros beállítása" kifejezést. A felhasználónak azonban nem kell pontosan kiejteni ezt a kifejezést. Például ezt mondhatja: "Kérem, állítsa az 1. szövegmező szövegét pirosra", és a beszédmotor továbbra is felismeri a kifejezést "az 1. szövegmező beállítása pirosra" – igaz, alacsonyabb megbízhatósági értékkel, mint a Nyelvtani sablon. Más szavakkal, a nyelvtani objektumok létrehozásakor nem kell figyelembe vennie egy kifejezés minden változatát. Ez drasztikusan leegyszerűsíti a beszédfelismerés használatát.

    A CheckBox eseménykezelője a következőképpen van definiálva:

    private void checkBox1_CheckedChanged(object sender, EventArgs e) ( if (checkBox1.Checked == true) sre.RecognizeAsync(RecognizeMode.Multiple); else if (checkBox1.Checked == false) // letiltva sre.Sync)RecognizeA);

    A beszédfelismerő motor objektum, az sre (beszédfelismerő motor), mindig létezik a Windows Forms alkalmazás élettartama alatt. Ezt az objektumot a RecognizeAsync és RecognizeAsyncCancel metódusok hívásai aktiválják és deaktiválják, amikor a felhasználó ennek megfelelően váltja a CheckBoxot.

    A SpeechRecognized eseménykezelő meghatározása a következővel kezdődik:

    void sre_SpeechRecognized(objektum küldő, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; if (conf< 0.65) return; ...

    A többé-kevésbé gyakran használt Result.Text és Result.Confidence tulajdonságokon kívül az Eredmény objektum számos más hasznos, de összetettebb tulajdonsággal is rendelkezik, amelyeket érdemes lehet felfedezni; például a homofonok és a helyettesítő szóegységek. Ezenkívül a beszédfelismerő motor néhány hasznos eseményt biztosít, például a SpeechHypothesized.

    this.Invoke((Action)(() => listBox1.Items.Add("Hallottam, hogy ezt mondtad: " + txt)));

    Elméletileg a MethodInvoker delegált használata valamivel hatékonyabb, mint az Action delegált ebben a helyzetben, mivel a MethodInvoker a Windows.Forms névtér része, és ezért a Windows Forms alkalmazásokra jellemző. Az Akció delegáltja sokoldalúbb. Ez a példa azt mutatja, hogy a beszédfelismerő motoron keresztül teljes mértékben manipulálhat egy Windows Forms alkalmazást – ez egy hihetetlenül hatékony és hasznos funkció.

    Következtetés

    Az ebben a cikkben közölt információk azonnali segítséget nyújtanak Önnek, ha a beszédszintézist és -felismerést szeretné felfedezni a .NET-alkalmazásokban. Magát a technológiát nem nehéz elsajátítani, ha túljut a kezdeti betanítás és az alkatrészek beszerelésének nehézségein. A beszédszintézisben és -felismerésben az igazi kihívás annak megértése, hogy mikor hasznos.

    A konzolos programok esetében érdekes kölcsönös párbeszédeket lehet létrehozni, ahol a felhasználó feltesz egy kérdést, a program pedig válaszol, ami lényegében Cortana-szerű környezetet eredményez. Kicsit óvatosnak kell lennie, mert amikor a beszéd kijön a számítógép hangszóróiból, azt a mikrofon felfogja, és újra felismerhető. Jómagam is voltam már olyan vicces helyzetekben, amikor feltettem egy kérdést, az alkalmazás felismerte és válaszolt, de a kimondott válasz elindította a következő felismerési eseményt, és nevetséges, véget nem érő beszédhurokhoz kötöttem.

    A beszéd másik lehetséges felhasználási módja a konzolprogramokban az olyan parancsok felismerése, mint a "Jegyzettömb indítása" és a "Szám indítása". Más szóval, egy ilyen konzolprogram használható a számítógépen olyan műveletek végrehajtására, amelyek egyébként sok billentyűzet- és egérkezelést igényelnének.

    James McCaffrey(Dr. James McCaffrey) a Microsoft Researchnél dolgozik Redmondban, Washingtonban. Részt vett számos Microsoft-termék, köztük az Internet Explorer és a Bing létrehozásában. Érdeklődni a telefonszámon lehet [e-mail védett].

    Szeretnék köszönetet mondani a Microsoft Research szakértőinek, Rob Gruennek, Mark Marronnak és Curtis von Veh-nek a cikk áttekintéséért.

    Egyetlen program sem helyettesítheti teljesen a rögzített beszéd átírásának kézi munkáját. Vannak azonban olyan megoldások, amelyek jelentősen felgyorsíthatják és megkönnyíthetik a beszéd szöveggé fordítását, vagyis egyszerűsíthetik az átírást.

    Az átírás egy hang- vagy videofájl rögzítése szöveges formában. Az interneten vannak fizetős feladatok, amikor egy szöveg átírásáért bizonyos összeget fizetnek az előadónak.

    A beszédből szövegbe fordítás hasznos

    • a hallgatók lefordíthatják a rögzített hang- vagy videóelőadásokat szöveggé,
    • weboldalakat és blogokat vezető bloggerek,
    • írók, újságírók könyvek és szövegek írására,
    • információs üzletemberek, akiknek szövegre van szükségük webináriumuk, beszédük stb. után,
    • olyan emberek, akiknek nehéz a gépelés – lediktálhatnak egy levelet, és elküldhetik rokonoknak vagy barátoknak,
    • egyéb opciók.

    Leírjuk a PC-n, mobilalkalmazásokon és online szolgáltatásokon elérhető leghatékonyabb eszközöket.

    1 Webhely speakpad.ru

    Ez egy online szolgáltatás, amely lehetővé teszi a beszéd szöveggé fordítását a Google Chrome böngészőn keresztül. A szolgáltatás mikrofonnal és kész fájlokkal működik. Természetesen a minőség sokkal jobb lesz, ha külső mikrofont használ, és saját maga diktál. A szolgáltatás azonban még a YouTube-videóknál is jó munkát végez.

    Kattintson a "Rögzítés engedélyezése" gombra, válaszoljon a "Mikrofon használata" kérdésre - ehhez kattintson az "Engedélyezés" gombra.

    A szolgáltatás használatára vonatkozó hosszú útmutató összecsukható az 1. ábra 1. gombjára kattintva. 3. Egy egyszerű regisztrációval megszabadulhat a reklámoktól.

    Rizs. 3. Szerviz beszédpanel

    A kész eredmény könnyen szerkeszthető. Ehhez vagy manuálisan kell kijavítania a kiemelt szót, vagy újra be kell diktálnia. A munka eredményeit a személyes fiókjába menti, és letöltheti a számítógépére is.

    A beszédpaddal való munkavégzésről szóló oktatóvideók listája:

    A videókat átírhatod a Youtube-ról vagy a számítógépedről, de szükséged lesz egy keverőre, további részletek:

    Videó "audio átírás"

    A szolgáltatás hét nyelven működik. Van egy kis mínusz. Ez abban rejlik, hogy ha egy kész hangfájlt kell átírnia, akkor annak hangja eloszlik a hangszórókhoz, ami további interferenciát okoz visszhang formájában.

    2 Szolgáltatás diktálás.io

    Egy csodálatos online szolgáltatás, amely lehetővé teszi a beszéd ingyenes és egyszerű fordítását szöveggé.

    Rizs. 4. Szolgálati diktálás.io

    ábrán 1. 4 - Orosz nyelv az oldal végén választható. A Google Chrome böngészőben a nyelv van kiválasztva, de a Mozillában valamiért nincs ilyen lehetőség.

    Figyelemre méltó, hogy a kész eredmény automatikus mentésének képessége megvalósul. Ezzel elkerülhető a lap vagy a böngésző bezárása miatti véletlen törlés. Ez a szolgáltatás nem ismeri fel a kész fájlokat. Mikrofonnal működik. Diktáláskor írásjeleket kell elnevezni.

    A szöveget teljesen helyesen ismeri fel, nincs helyesírási hiba. Írásjeleket saját maga is beilleszthet a billentyűzetről. A kész eredmény elmenthető a számítógépére.

    3 RealSpeaker

    Ez a program lehetővé teszi az emberi beszéd egyszerű szöveggé fordítását. Úgy tervezték, hogy különböző rendszereken működjön: Windows, Android, Linux, Mac. Segítségével a hangzó beszédet mikrofonba konvertálhatja (például laptopba építhető), valamint hangfájlokba rögzítve.

    A világ 13 nyelvét képes felfogni. A programnak van egy béta verziója, amely online szolgáltatásként működik:

    Kövesse a fenti linket, válassza ki az orosz nyelvet, töltse fel audio- vagy videofájlját az online szolgáltatásba, és fizetjen az átírásért. Az átírás után a kapott szöveget másolhatja. Minél nagyobb az átíráshoz szükséges fájl, annál több időt vesz igénybe annak feldolgozása, további részletek:

    2017-ben volt ingyenes átírási lehetőség a RealSpeaker segítségével, 2018-ban erre nincs lehetőség. Nagyon kínos, hogy az átírt fájl minden felhasználó számára letölthető, talán ez is véglegesítésre kerül.

    A program fejlesztőjének elérhetőségei (VKontakte, Facebook, Youtube, Twitter, email, telefon) a weboldala oldalán (pontosabban az oldal láblécében) találhatók:

    4 Beszédnaplózó

    Alternatíva a korábbi alkalmazáshoz Androidon futó mobileszközökhöz. Ingyenesen elérhető az App Store-ban:

    A szöveg szerkesztése automatikusan történik, írásjelek kerülnek bele. Kiválóan alkalmas jegyzetek diktálására vagy listák készítésére. Ennek eredményeként a szöveg nagyon megfelelő minőségű lesz.

    5 Sárkánydiktálás

    Ez egy olyan alkalmazás, amelyet ingyenesen terjeszt az Apple mobileszközökre.

    A program 15 nyelven tud működni. Lehetővé teszi az eredmény szerkesztését, a kívánt szavak kiválasztását a listából. Minden hangot egyértelműen ki kell mondani, ne tartson szükségtelen szüneteket és kerülje az intonációt. Néha hibák vannak a szavak végződésében.

    A Dragon Dictation alkalmazást a tulajdonosok például arra használják, hogy a lakásban való mozgás közben diktálják a bevásárlólistát az üzletben. Odajövök, a jegyzetben meg lehet majd nézni a szöveget, és nem kell hallgatni.

    Bármilyen programot is használ a gyakorlatban, készüljön fel az eredmény kétszeri ellenőrzésére és bizonyos módosítások elvégzésére. Ez az egyetlen módja annak, hogy hibátlan, hibamentes szöveget kapjunk.

    Szintén hasznos szolgáltatások:

    A számítógépes ismeretekkel kapcsolatos naprakész cikkeket közvetlenül a postaládájába kaphatja.
    Már több 3000 előfizető

    .

    Frissítve: 2017. július 31., hétfő

    Mi köze a professzionális fotózáshoz a félig fantasztikus ötletnek, hogy számítógéppel beszélgessünk? Szinte egyik sem, ha nem rajong az ember teljes technikai környezetének végtelen fejlesztésének ötletéért. Képzelje el egy pillanatra, hogy hangutasításokat ad a fényképezőgépnek, hogy módosítsa a gyújtótávolságot, és tegye fél lépéssel plusz az expozíciókompenzációt. A kamera távirányítóját már megvalósították, de ott hangtalanul kell nyomkodni a gombokat, és itt egy hallófotik!

    Hagyománnyá vált, hogy a számítógéppel való emberi hangkommunikáció példájaként valamilyen fantasztikus filmet említenek, legalábbis a Stanley Kubrick által rendezett "Space Odyssey 2001"-et. Ott a fedélzeti számítógép nemcsak értelmes párbeszédet folytat az űrhajósokkal, hanem süketként tud olvasni az ajkáról. Más szóval, a gép megtanulta az emberi beszédet hiba nélkül felismerni. Lehet, hogy valaki feleslegesnek tartja a kamera távvezérlését, de sokaknak tetszik ez a kifejezés "Vegyél le minket bébi"és kész az egész család képe egy pálmafa hátterében.

    Nos, itt tisztelegtem a hagyomány előtt, kicsit fantáziálva. De a szívem mélyéről szólva ezt a cikket nehéz volt megírni, és az egész egy ajándékkal kezdődött, egy Android 4 operációs rendszerrel rendelkező okostelefon formájában. Ez a HUAWEI U8815 modell egy kicsi, négy hüvelykes érintőképernyővel és egy képernyőn megjelenő billentyűzettel rendelkezik. Kicsit szokatlan gépelni rajta, de kiderült, hogy nem különösebben szükséges. (kép01)

    1. Hangfelismerés okostelefonon Android OS rendszeren

    Egy új játék kipróbálása közben egy mikrofongrafikát vettem észre a keresősávban. Googleés a billentyűzeten a Notes alkalmazásban. Korábban nem érdekelt, mit jelent ez a szimbólum. Voltak beszélgetéseim Skypeés betűket gépelt a billentyűzeten. A legtöbb internetfelhasználó ezt teszi. De ahogy később elmagyarázták nekem, egy keresőben Google bekerült az orosz nyelvű hangalapú keresés, és megjelentek olyan programok, amelyek lehetővé teszik a rövid üzenetek diktálását böngésző használatakor Króm.

    Kimondtam egy három szóból álló kifejezést, a program azonosította őket, és egy kék hátterű cellában megmutatta őket. Volt min meglepődni, mert minden szót helyesen írtak. Ha erre a cellára kattint, a kifejezés megjelenik az Android jegyzettömb szövegmezőjében. Szóval mondott pár mondatot, és SMS-ben üzent az asszisztensnek.


    2. A hangfelismerő programok rövid története.

    Nem volt számomra felfedezés, hogy a hangvezérlés terén elért modern vívmányok lehetővé teszik, hogy parancsokat adjunk háztartási gépeknek, autóknak, robotoknak. A parancsmódot a Windows, OS/2 és Mac OS korábbi verzióiban vezették be. Láttam beszélőprogramokat, de mi hasznuk? Talán az a sajátosságom, hogy könnyebben tudok beszélni, mint a billentyűzeten gépelni, mobiltelefonon pedig egyáltalán nem tudok gépelni semmit. A névjegyeket laptopon kell rögzítenie normál billentyűzettel, és USB-kábellel kell továbbítania. De csak a mikrofonba beszélni, és maga a számítógép hiba nélkül beírta a szöveget - ez egy álom volt számomra. A kilátástalanság hangulatát a fórumokon zajló beszélgetések is alátámasztották. Mindenhol ilyen szomorú gondolatok támadtak:

    „A gyakorlatban azonban a mai napig gyakorlatilag nem léteznek valódi beszédfelismerő programok (és még oroszul is), és nyilvánvalóan nem is fognak hamarosan elkészülni. Sőt, még a felismerés fordított feladata - a beszédszintézis, amely, úgy tűnik, sokkal egyszerűbb, mint a felismerés, még nem oldották meg teljesen. (ComputerPress №12, 2004)

    „A mai napig nincs normális beszédfelismerő program (nem csak orosz), mivel a feladat meglehetősen nehéz egy számítógép számára. A legrosszabb pedig az, hogy nem valósult meg az ember általi szófelismerés mechanizmusa, így nincs mire építeni a felismerő programok elkészítésekor. (Újabb vita a fórumon).

    Az angol nyelvű szövegbeviteli programok áttekintései ugyanakkor egyértelmű sikereket jeleztek. Például, IBM ViaVoice 98 Executive Edition 64 000 szóból álló alapszótáruk volt, és ugyanennyi saját szava is hozzáadható volt. A szófelismerés százalékos aránya a program betanítása nélkül körülbelül 80% volt, és egy adott felhasználóval végzett későbbi munkával elérte a 95% -ot.

    Az orosz nyelv felismerésére szolgáló programok közül érdemes megemlíteni a "Gorynych" -t - az angol nyelvű Dragon Dictate 2.5 kiegészítését. A keresésről, majd az "öt Gorynych-al való csatáról" az áttekintés második részében fogok mesélni. Először az "angol sárkányt" találtam.

    3. A folyamatos beszéd felismerésére szolgáló program "Sárkány természetesen beszél"

    A cég programjának modern változata Árnyalat kiderült, hogy régi barátommal a Minszki Idegennyelvi Intézetből. Egy külföldi útról hozta, és megvette, arra gondolva, hogy "számítógépes titkárnő" lehetne. De valami nem működött, és a program szinte feledésbe merült a laptopon. Érthető tapasztalat híján magamnak kellett elmennem a barátomhoz. Mindez a hosszadalmas bevezetés szükséges az általam levont következtetések megfelelő megértéséhez.

    Az első sárkányom teljes neve: . A program angol nyelvű és kézikönyv nélkül is minden világos benne. Az első lépés egy adott felhasználó profiljának létrehozása, hogy meghatározzuk a szavak hangzásának jellemzőit az előadásában. Amit meg is tettem – fontos a beszélő kora, az ország, a kiejtés sajátosságai. Az én választásom: 22-54 éves kor, angol UK, szabványos kiejtés. Ezután jön néhány ablak, ahol beállíthatja a mikrofont. (kép04)

    A komoly beszédfelismerő programok következő szakasza egy adott személy konkrét kiejtésének képzése. A szöveg jellegét meg kell választani: az én választásom egy rövid diktálási utasítás, de lehet humoros történetet is „rendelni”.

    A programmal való munka ezen szakaszának lényege rendkívül egyszerű - a szöveg megjelenik az ablakban, felette egy sárga nyíl. Helyes kiejtés esetén a nyíl a kifejezések között mozog, alul pedig egy edzési folyamatjelző található. Az angol társalgást eléggé elfelejtettem, így nehezen mozdultam. Az idő is korlátozott volt - elvégre a számítógép nem az enyém, és meg kellett szakítanom az edzést. De egy barátja azt mondta, hogy kevesebb mint fél óra alatt elvégezte a tesztet. (kép05)

    Mivel nem voltam hajlandó a kiejtésemhez igazítani a programot, a főablakba mentem, és elindítottam a beépített szövegszerkesztőt. Külön szavakat beszélt néhány szövegtől, amelyeket a számítógépen talált. Azokat a szavakat, amelyeket helyesen mondott, a program kinyomtatta, azokat, amelyeket rosszul mondott, valami „angol”-ra cserélték. Miután az „erase line” parancsot angolul egyértelműen kiejtette, a program teljesítette azt. Ez azt jelenti, hogy helyesen olvasom a parancsokat, és a program előzetes képzés nélkül felismeri azokat.

    De fontos volt számomra, hogy ez a "sárkány" hogyan ír oroszul. Ahogy az előző leírásból is értetted, a program betanítása során csak angol szöveget választhatsz, ott egyszerűen nincs orosz szöveg. Nyilvánvaló, hogy az orosz beszéd felismerésének képzése nem fog működni. A következő képen láthatja, hogy a program milyen kifejezést írt be az orosz "Szia" szó kiejtésekor. (kép06)

    Az első sárkánnyal folytatott kommunikáció eredménye kissé komikusnak bizonyult. Ha figyelmesen elolvassa a szöveget a hivatalos webhelyen, láthatja ennek a szoftverterméknek az angol "specializációját". Ezenkívül betöltéskor a program ablakában olvassuk az "angol nyelvet". Akkor miért volt szükség erre az egészre? Nyilvánvaló, hogy a fórumok és a pletykák a hibásak...

    De van egy hasznos tapasztalat is. A barátom kérte, hogy nézze meg a laptopja állapotát. Valahogy lassan elkezdett dolgozni. Ez nem meglepő - a rendszerpartíción csak 5% szabad hely volt. A felesleges programok törlése közben azt láttam, hogy a hivatalos verzió több mint 2,3 GB-ot foglalt el. Erre a számra később szükségünk lesz. (07. kép)



    Az orosz beszéd felismerése, mint kiderült, nem volt triviális feladat. Minszkben sikerült megtalálnom a "Gorynych"-t egy barátomtól. A korongot sokáig kereste régi romjai között, és elmondása szerint ez egy hivatalos kiadvány. A program azonnal települt, és megtudtam, hogy a szótárában 5000 orosz szó plusz 100 parancs és 600 angol szó plusz 31 parancs található.

    Először be kell állítani a mikrofont, amit meg is tettem. Aztán kinyitottam a szótárat és hozzáadtam a szót "vizsgálat" mert nem volt benne a program szótárában. Próbáltam tisztán, monoton beszélni. Végül megnyitottam a Gorynych Pro 3.0 programot, bekapcsoltam a diktálási módot, és megkaptam ezt a listát a „hasonló hangzású szavakról”. (09. kép)

    Az eredmény megdöbbentett, mert egyértelműen eltért egy androidos okostelefon működésétől, és úgy döntöttem, hogy kipróbálok más programokat a " Google Chrome Internetes áruház". És későbbre halasztotta a „gorynych kígyókkal” való foglalkozást. ezt gondoltam halasztás cselekvés az eredeti orosz szellemben

    5. A Google hangképességei

    Ha normál Windows operációs rendszerű számítógépen szeretne hangot használni, telepítenie kell egy böngészőt Google Chrome. Ha az interneten dolgozik benne, akkor a jobb alsó sarokban kattintson a szoftverbolt linkjére. Ott ingyen találtam két programot és két bővítményt hangos szövegbevitelhez. A programok ún "Hangjegyzetfüzet"és "Voysnot – hang szöveggé". Telepítés után a fülön találhatók "Alkalmazások" a böngészőjét "Króm". (10. kép)

    A kiterjesztéseket ún "Google Voice Search Hotword (Béta) 0.1.0.5"és "Hangbeviteli szöveg – Speechpad.ru 5.4". Telepítés után a fülön kikapcsolhatók vagy törölhetők "Bővítmények".(11. kép)

    Hangjegyzet. A Chrome böngésző Alkalmazás lapján kattintson duplán a program ikonjára. Megnyílik egy párbeszédpanel az alábbi képen látható módon. A mikrofon ikonra kattintva rövid mondatokat mond a mikrofonba. A program elküldi a szavait a beszédfelismerő szervernek, és beírja a szöveget az ablakba. Az ábrán látható összes szót és kifejezést az első próbálkozásra gépelték be. Nyilvánvaló, hogy ez a módszer csak aktív internetkapcsolat mellett működik. (12. kép)

    Hangjegyzettömb. Ha az Alkalmazások fülön futtatja a programot, az Internet oldal új lapja nyílik meg Speechpad.ru. A szolgáltatás használatához részletes utasítások és egy kompakt űrlap található. Ez utóbbi az alábbi ábrán látható. (13. kép)

    Hangbemenet szöveg lehetővé teszi, hogy hangjával töltse ki az internetes oldalak szövegmezőit. Például felmentem az oldalamra Google+. Az új üzenet beviteli mezőjében kattintson a jobb gombbal, és válassza ki "SpeechPad". A rózsaszín beviteli mező azt jelzi, hogy diktálhatja a szöveget. (14. kép)

    Google Hangalapú keresés lehetővé teszi a hangalapú keresést. Amikor telepíti és aktiválja ezt a bővítményt, egy mikrofon szimbólum jelenik meg a keresősávban. Ha megnyomja, egy szimbólum jelenik meg egy nagy piros körben. Csak mondja ki a keresett kifejezést, és az megjelenik a keresési eredmények között. (15. kép)

    Fontos megjegyzés: ahhoz, hogy a mikrofon működjön a Chrome-bővítményekkel, engedélyeznie kell a hozzáférést a mikrofonhoz a böngésző beállításaiban. Biztonsági okokból alapértelmezés szerint le van tiltva. Menj be Beállítások→ Személyes adatok→ Tartalombeállítások. (A lista végén található összes beállítás eléréséhez kattintson a gombra Haladó beállítások mutatása). Megnyílik egy párbeszédpanel Az oldaltartalom beállításai. Válasszon ki egy elemet a listából Multimédia → mikrofon.

    6. Orosz beszédfelismerő programokkal végzett munka eredményei

    A szövegbeviteli programok hanggal történő használatában szerzett kis tapasztalat azt mutatta, hogy ez a funkció kiválóan implementálható egy internetes cég szerverein Google. Előzetes képzés nélkül a szavakat a rendszer helyesen ismeri fel. Ez azt jelzi, hogy az orosz beszédfelismerés problémája megoldódott.

    Most már elmondhatjuk, hogy a fejlődés eredménye Googleúj kritérium lesz más gyártók termékeinek értékeléséhez. Szeretném, ha a felismerő rendszer offline módban működne anélkül, hogy kapcsolatba lépne a cég szervereivel – kényelmesebb és gyorsabb. De nem ismert, hogy mikor adnak ki független programot a folyamatos orosz beszédfolyammal való munkavégzéshez. Érdemes azonban feltételezni, hogy a képzés lehetőségével ez az „alkotás” igazi áttörést jelent.

    Orosz fejlesztők programjai "Gorynych", "Diktográf"és "Harc" A részletekre az áttekintés második részében térek ki. Ez a cikk nagyon lassan íródott, mert az eredeti lemezek keresése mára nehézkes. Jelenleg már megvan az orosz hang-szöveg felismerő szoftver összes verziója, kivéve a Combat 2.52-t. Egyik barátom vagy kollégám sem rendelkezik ezzel a programmal, és nekem is csak néhány dicsérő vélemény van a fórumokon. Igaz, volt egy ilyen furcsa lehetőség - a "Combat" letöltése SMS-ben, de nem szeretem. (16. kép)


    Egy rövid videoklip bemutatja, hogyan működik a beszédfelismerés egy Android operációs rendszert futtató okostelefonon. A hangtárcsázás egyik jellemzője, hogy csatlakozni kell a Google szervereihez. Így az internetnek működnie kell az Ön számára

    Ennek a telefonnak van beszédfelismerés vagy hangbemenettel, de csak az interneten keresztül működik, csatlakozva a Google szolgáltatásaihoz. De a telefon megtanítható a beszéd felismerésére internet nélkül is, megnézzük, hogyan lehet az orosz nyelv felismerését engedélyezni offline módban. Ahhoz, hogy ez a módszer működjön, telepítenie kell két alkalmazást. Hang Keresésés Google kereső, bár ezek a programok már jelen vannak a gyári firmware-ben.

    Firmware-hez

    Nyissa meg a telefon beállításait, és válassza ki

    Kiválasztjuk az orosz nyelvet és letöltjük.

    2.8B firmware-hez

    Az új firmware-ben a "menüpont Offline beszédfelismerés" hiányzó.

    Ha a firmware frissítése előtt offline csomagok voltak telepítve, és a frissítés során nem törölte (visszaállította a beállításokat), akkor ezeket el kellett volna menteni. Ellenkező esetben vissza kell térnie a firmware-hez 2.2 , telepítse a hangcsomagokat, és csak ezután frissítse a rendszert a következőre 2.8B.

    Rev.B készülékekhez

    A frissítést a helyreállításon keresztül telepítjük, és élvezzük az oyline hangfelismerését.

    2. Töltse le az orosz beszéd alapot, és másolja az SD-kártyára

    Töltse le a Russian_offline.zip 1301 fájlt

    3. Adja meg a helyreállítást a (Hangerő + és Be) gomb lenyomva tartásával, miközben a telefon ki van kapcsolva.

    4. Válassza ki Frissítés telepítése külső tárolórólés válassza ki a letöltött archívumot.



    Hasonló cikkek