• Ultragyors beszédfelismerés szerverek nélkül egy valós példán. A legjobb orosz beszédfelismerő szoftver offline beszédfelismerő android

    12.12.2021

    ) a háztartási gépek vezérlésének igazi Hello World példáján.
    Miért háztartási gépek? Igen, mert egy ilyen példának köszönhetően ezt értékelni lehet sebesség és pontosság használatával érhető el teljesen helyi beszédfelismerés típusszerverek nélkül Google ASR vagy Yandex SpeechKit.
    A cikkhez csatolom a program összes forráskódját és magát az összeállítást is Androidra.

    Miért hirtelen?

    A közelmúltban belebotlva elmondtam a szerzőnek, hogy miért akart szerveroldali beszédfelismerést használni a programjához (szerintem ez felesleges volt, és problémákhoz vezetett). Mi van ezzel, leírhatnám részletesebben az alternatív módszerek alkalmazását olyan projekteknél, ahol nem kell semmit felismerni, és a szótár véges szavak halmazából áll. Sőt, egy gyakorlati alkalmazási példával ...

    Miért van szükségünk másra a Yandexen és a Google-n kívül?

    Nagyon „gyakorlati alkalmazásként” választottam a témát intelligens otthon hangvezérlés.
    Miért ilyen példa? Mert rajta látszik a teljesen lokális beszédfelismerésnek az a néhány előnye a felhőmegoldások segítségével történő felismeréshez képest. Ugyanis:
    • Sebesség- nem függünk a szerverektől, ezért nem függünk azok elérhetőségétől, sávszélességétől stb. tényezőket
    • Pontosság- motorunk csak az alkalmazásunkat érdeklő szótárral működik, ezzel is javítva a felismerés minőségét
    • Ár- nem kell fizetnünk minden egyes kérésért a szerver felé
    • Hangaktiválás- plusz bónusz az első pontokhoz - folyamatosan "hallgathatjuk a levegőt" anélkül, hogy a forgalmunkat pazarolnánk és a szervert nem terhelnénk

    jegyzet

    Azonnal leszögezem, hogy ezek az előnyök előnynek tekinthetők csak a projektek egy bizonyos osztályához, Hol vagyunk biztosan tudjuk, melyik szótárral és nyelvtannal fog a felhasználó operálni. Vagyis amikor nem kell tetszőleges szöveget felismernünk (például SMS-t vagy keresési lekérdezést). Ellenkező esetben a felhőfelismerés nélkülözhetetlen.

    Így az Android képes felismerni a beszédet internet nélkül!
    Igen, igen... Csak a JellyBean-en. És csak fél méterről, nem tovább. És ez a felismerés ugyanaz a diktálás, csak egy sokkal kisebb modell használatával. Így nem tudjuk kezelni és konfigurálni sem. És hogy legközelebb mit fog visszaadni, nem tudni. Bár az SMS-hez rendben van!

    Mit csináljunk?

    Háztartási gépekhez hangos távirányítót valósítunk meg, ami pontosan és gyorsan, néhány méterről és akár olcsó fékszeméten is működik a nagyon olcsó Android okostelefonokon, tableteken és órákon.
    A logika egyszerű lesz, de nagyon praktikus. Aktiváljuk a mikrofont, és kimondunk egy vagy több eszköznevet. Az alkalmazás felismeri őket, és az aktuális állapottól függően be- vagy kikapcsolja őket. Vagy kap tőlük egy állapotot, és kellemes női hangon ejti ki. Például a helyiség aktuális hőmérséklete.

    Rengeteg gyakorlati alkalmazás

    Reggel anélkül, hogy kinyitották volna a szemüket, az éjjeliszekrényre csapták az okostelefon képernyőjét, és azt mondták: „Jó reggelt!” - elindul a forgatókönyv, a kávéfőző bekapcsol és zümmög, kellemes zene hallatszik, a függönyök széthúzódnak.
    Akasszon fel egy olcsó (2 ezer, nem több) okostelefont minden szobában a falon. Munka után hazamegyünk és az ürességbe parancsolunk „Okos otthon! Fény, TV! - Hogy ezután mi lesz, azt gondolom, nem szükséges elmondani.

    Átiratok



    A nyelvtan leírja, hogy mit amit a felhasználó mondhat. Hogy Pocketsfinx tudja mintő fogja kiejteni, a nyelvtanból minden egyes szónak meg kell írnia, hogyan hangzik a megfelelő nyelvi modellben. Azaz átírás minden szó. Ez az úgynevezett szójegyzék.

    Az átírások leírása speciális szintaxis segítségével történik. Például:
    okos uu m n ay j ház d oo m

    Elvileg semmi bonyolult. A kettős magánhangzó az átírásban a hangsúlyt jelöli. A kettős mássalhangzó lágy mássalhangzó, amelyet magánhangzó követ. Minden lehetséges kombináció az orosz nyelv összes hangjához.

    Nyilvánvaló, hogy nem tudjuk előre leírni az összes átírást az alkalmazásunkban, mert nem tudjuk előre, hogy a felhasználó milyen nevet fog adni a készülékeinek. Ezért az orosz fonetika bizonyos szabályai szerint menet közben generálunk ilyen átírásokat. Ehhez megvalósíthat egy olyan PhonMapper osztályt, amely egy karakterláncot tud fogadni bemenetként, és előállítja a megfelelő átírást.

    Hangaktiválás

    Ez a beszédfelismerő motor azon képessége, hogy folyamatosan „hallgatja a levegőt”, hogy válaszoljon egy előre meghatározott kifejezésre (vagy kifejezésekre). Az összes többi hang és beszéd elvetődik. Ez nem ugyanaz, mint leírni a nyelvtant és csak bekapcsolni a mikrofont. Nem adom itt ennek a feladatnak az elméletét és a működésének mechanikáját. Csak annyit mondok, hogy a közelmúltban a Pocketsphinx-en dolgozó programozók implementáltak egy ilyen funkciót, és most már a dobozból elérhető az API-ban.

    Egy dolgot mindenképpen érdemes megemlíteni. Az aktiválási kifejezéshez nem csak az átírást kell megadnia, hanem ki kell választania a megfelelőt is érzékenységi küszöbérték. A túl kicsi érték sok hamis pozitív eredményhez vezet (ez az, amikor nem mondta ki az aktiválási kifejezést, de a rendszer felismeri). És túl magas - az immunitáshoz. Ezért ez a beállítás különösen fontos. Hozzávetőleges értéktartomány - 1e-1 és 1e-40 között az aktiválási kifejezéstől függően.

    Proximity aktiválás

    Ez a feladat kifejezetten a mi projektünkre vonatkozik, és nem kapcsolódik közvetlenül az elismeréshez. A kód közvetlenül a fő tevékenységben látható.
    A lány rájön SensorEventListenerés a megközelítés pillanatában (az érzékelő értéke kisebb, mint a maximális érték) elindítja az időzítőt, bizonyos késleltetés után ellenőrzi, hogy az érzékelő még mindig blokkolva van-e. Ez a hamis pozitív eredmények elkerülése érdekében történik.
    Ha az érzékelőt nem blokkolják újra, leállítjuk a felismerést, és megkapjuk az eredményt (lásd az alábbi leírást).

    Elkezdjük az elismerést

    A Pocketsphinx kényelmes API-t biztosít a felismerési folyamat konfigurálásához és futtatásához. Ezek az osztályok SpechRecognizerés SpeechRecognizerSetup.
    Így néz ki a felismerés beállítása és elindítása:

    PhonMapper phonMapper = new PhonMapper(getAssets().open("dict/ru/hotwords")); Grammar grammar = new Grammar(nevek, phonMapper); grammar.addWords(hotword); DataFiles dataFiles = new DataFiles(getPackageName(), "ru"); Fájl hmmDir = new Fájl(dataFiles.getHmm()); Fájl dict = new Fájl(dataFiles.getDict()); Fájl jsgf = new Fájl(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

    Itt először átmásoljuk az összes szükséges fájlt a lemezre (a Pocketpshinx akusztikus modellt, nyelvtani és átírási szótárt igényel a lemezen). Ezután maga a felismerő motor konfigurálva van. Meg van adva a modell- és szótárfájlok elérési útja, valamint néhány paraméter (az aktiválási kifejezés érzékenységi küszöbe). Ezután be kell állítani a nyelvtani fájl elérési útját, valamint az aktiválási kifejezést.

    Amint ebből a kódból látható, egy motor egyszerre van beállítva a nyelvtan és az aktiválási kifejezések felismerésére. Miért történik ez? Hogy gyorsan válthassunk azok között, amelyeket jelenleg fel kell ismernünk. Így néz ki az aktiváló kifejezés-felismerési folyamat elindítása:

    MRecognizer.startListening(KWS_SEARCH);
    És így - beszédfelismerés egy adott nyelvtan szerint:

    MRecognizer.startListening(COMMAND_SEARCH, 3000);
    A második argumentum (nem kötelező) az a milliszekundum, amely után a felismerés automatikusan véget ér, ha senki nem mond semmit.
    Amint látja, mindkét probléma megoldására csak egy motort használhat.

    Hogyan kaphatunk elismerési eredményt

    A felismerési eredmény eléréséhez meg kell adni egy eseményfigyelőt is, amely megvalósítja a felületet RecognitionListener.
    Számos módszere van, amelyeket a pocketsphinx hív meg, ha valamelyik esemény bekövetkezik:
    • onBeginningOfSpeech- a motor hallott némi hangot, talán beszéd (vagy talán nem)
    • onEndOfSpeech- hang véget ért
    • onPartialResult- vannak közbenső felismerési eredmények. Az aktiválási kifejezésnél ez azt jelenti, hogy működött. Érv Hipotézis
    • onResult- az elismerés végeredménye. Ez a metódus a metódus meghívása után kerül meghívásra állj meg nál nél SpeechRecognizer. Érv Hipotézis felismerési adatokat tartalmaz (karakterlánc és pontszám)

    Az onPartialResult és onResult metódusok ilyen vagy olyan módon történő megvalósításával megváltoztathatja a felismerési logikát, és megkaphatja a végeredményt. Alkalmazásunkhoz ez a következőképpen történik:

    @Public void onEndOfSpeech() felülbírálása ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Public void onPartialResult(thesispothesis)hipotézis ( if (hipotézis == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) else ( Log.d(TAG, szöveg); ) ) @Override public void onResult(Hypothesis hypothesis) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); String text = hipotézis != null ? hypothesis.dHyptézis; null. , "onResult " + szöveg); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( if (szöveg != null) ( Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); process(text) ); ) mRecognizer.startListening(KWS_SEARCH); ) )

    Amikor megkapjuk az onEndOfSpeech eseményt, és egyidejűleg felismerünk egy végrehajtandó parancsot, akkor le kell állítani a felismerést, amely után azonnal meghívódik az onResult.
    Az onResultban ellenőriznie kell, hogy mi került felismerésre. Ha ez egy parancs, akkor le kell futtatnia a végrehajtáshoz, és át kell kapcsolnia a motort, hogy felismerje az aktiválási kifejezést.
    Az onPartialResultban csak az aktiváló kifejezés felismerése érdekel bennünket. Ha észleljük, azonnal elindítjuk a parancs felismerésének folyamatát. Így néz ki:

    Privát szinkronizált void startRecognition() ( if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.MAX_VOLUME).startGeneratorne(To).ne TONE_CDMA_PIP, 200); post(400, new Runnable() ( @Override public void run() ( mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, 3000,); Listen(TAG) parancsok"); post(4000, mStopRecognitionCallback); ) )); )
    Itt először lejátszunk egy kis jelet, hogy tudatjuk a felhasználóval, hogy hallottuk őt, és készen állunk a parancsára. Ez idő alatt a mikrofont ki kell kapcsolni. Ezért a felismerést egy kis időtúllépés után kezdjük (kicsit hosszabb, mint a jel időtartama, hogy ne halljuk a visszhangját). Ezenkívül elindít egy szálat, amely leállítja a felismerést, ha a felhasználó túl sokáig beszél. Ebben az esetben 3 másodperc.

    Hogyan lehet egy felismert karakterláncot parancsokká alakítani

    Nos, már minden egy adott alkalmazásra jellemző. A csupasz példa esetében egyszerűen kihúzzuk a sorból az eszközneveket, megkeressük a kívánt eszközt, és vagy megváltoztatjuk az állapotát HTTP kéréssel az intelligens otthon vezérlőjének, vagy jelentjük az aktuális állapotát (mint az egy termosztát). Ez a logika a Controller osztályban látható.

    Hogyan szintetizáljunk beszédet

    A beszédszintézis a felismerés fordított művelete. Itt éppen ellenkezőleg, egy szövegsort beszéddé kell alakítania, hogy a felhasználó hallja.
    A termosztát esetében meg kell állítanunk az Android készülékünkön az aktuális hőmérsékletet. Az API használata TextToSpeech ez meglehetősen egyszerű (köszönet a Google-nak a gyönyörű női TTS-ért orosz nyelven):

    Privát üres beszéd (String text) (szinkronizált (mSpeechQueue) (mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = új HashMap (2); params.put(SzövegBeszéd.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(Beszédszöveg.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ZENE)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "igaz"); mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); ) )

    Valószínűleg banálisnak mondanám, de a szintézis folyamata előtt le kell tiltani a felismerést. Egyes eszközökön (például az összes Samsungon) általában lehetetlen egyszerre hallgatni a mikrofont és szintetizálni valamit.
    A beszédszintézis vége (vagyis a szöveg szintetizátor általi beszédének folyamata) nyomon követhető a hallgatóban:

    Privát végleges TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String utteranceId) ( szinkronizálva (mRecognized) (mRecognich KWS_SEARCH) ; ) ) ) );

    Ebben egyszerűen ellenőrizzük, hogy van-e még valami a szintézissorban, és bekapcsoljuk az aktiváló kifejezések felismerését, ha nincs más.

    És ez minden?

    Igen! Mint látható, nem nehéz gyorsan és pontosan felismerni a beszédet közvetlenül az eszközön, köszönhetően az olyan csodálatos projekteknek, mint a Pocketsphinx. Nagyon praktikus API-t biztosít, amely a hangutasítás-felismeréssel kapcsolatos problémák megoldására használható.

    Ebben a példában a felismerést egy teljesen helyes feladathoz csavartuk - intelligens otthoni eszközök hangvezérlése. A helyi felismerésnek köszönhetően nagyon nagy sebességet értünk el és minimálisra csökkentettük a hibákat.
    Nyilvánvaló, hogy ugyanaz a kód használható más, hanggal kapcsolatos feladatokhoz is. Nem kell okosotthonnak lennie.

  • hangvezérlés
  • hangmotor
  • Címkék hozzáadása

    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ég megfelelője, amit nem szabad hiába emlegetni) megjelenésével a szoftverfejlesztésben egyre fontosabbá 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.

    Vegye figyelembe, 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 az ebben 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.

    A felhasználó ezután azt mondta: „Beszéd kikapcsolása” – 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: "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 Studió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_ 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 ) ( 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 az eseménykezelő nevével fejezi be a kifejezést – sre_SpeechRecognized. 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 (+ 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 kell az összes nyelvtan által felismert szöveget feldolgoznia ("klatu barada nikto"), hanem 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" szavakba 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. 4). 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 futási 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édszintézis nyelv 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 ezek egyidejű telepítése 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. Tehát ha beszédfeldolgozási példákat keres az interneten, és kódrészleteket lát, nem pedig teljes programokat, 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. kilenc. 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.setinputTodeFaultiAudevice (); sre.SpeeChReCognized += sre_speechrecognized; Grammar g_hellogoodbye = gethellogoodbygrammar (); / 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 nyelvtani 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 szeretné felfedezni a beszédszintézist és -felismerést 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 felveszi, é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 kiváltotta 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.

    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ányzik.

    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 azokat 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.

    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:

    Kaphat naprakész cikkeket a számítógépes ismeretekről közvetlenül a postaládájába.
    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 útmutató é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 egy internetes cég szerverein ez a funkció kiválóan megvalósítható. 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



    Hasonló cikkek