• Бодит жишээн дээр сервергүйгээр хэт хурдан яриа таних. Орос хэл яриа таних шилдэг программ офлайн яриа таних андроид

    12.12.2021

    ) гэр ахуйн цахилгаан хэрэгслийн хяналтын жинхэнэ Hello World жишээн дээр.
    Яагаад гэр ахуйн цахилгаан хэрэгсэл гэж? Тийм ээ, учир нь ийм жишээний ачаар хүн үүнийг үнэлж чадна хурд ба нарийвчлалашиглах замаар хүрч болох юм бүрэн орон нутгийнтөрлийн сервергүйгээр яриа таних Google ASRэсвэл Yandex SpeechKit.
    Би мөн нийтлэлд програмын бүх эх код, Android-д зориулсан угсралтыг хавсаргав.

    Яагаад гэнэт?

    Саяхан эргэлзэхдээ би зохиогчдоо яагаад програмдаа сервер талын яриа таних аргыг ашиглахыг хүсч байгаагаа хэлсэн (миний бодлоор энэ нь илүүц байсан бөгөөд зарим асуудалд хүргэсэн). Энэ талаар би юуг ч таних шаардлагагүй, толь бичиг нь хязгаарлагдмал үгсээс бүрддэг төслүүдэд өөр аргыг ашиглах талаар илүү дэлгэрэнгүй тайлбарлаж болох уу. Түүнээс гадна практик хэрэглээний жишээгээр ...

    Яагаад бидэнд Yandex болон Google-ээс өөр зүйл хэрэгтэй байна вэ?

    Тэр маш "практик хэрэглээ"-ийн хувьд би сэдвийг сонгосон ухаалаг гэрийн дуут удирдлага.
    Яагаад ийм жишээ татав? Учир нь үүн дээр та үүлэн шийдлийг ашиглан танихаас илүү орон нутгийн яриаг бүрэн таних цөөн хэдэн давуу талыг харж болно. Тухайлбал:
    • Хурд- бид серверүүдээс хамаардаггүй тул тэдгээрийн хүртээмж, зурвасын өргөн гэх мэт зүйлээс хамаардаггүй. хүчин зүйлүүд
    • Нарийвчлал- Манай хөдөлгүүр нь зөвхөн манай програмын сонирхож буй толь бичигтэй ажилладаг бөгөөд ингэснээр таних чанарыг нэмэгдүүлдэг
    • Үнэ- Бид серверт илгээсэн хүсэлт бүрийн төлөө төлбөр төлөх шаардлагагүй
    • Дуут идэвхжүүлэлт- Эхний оноонд нэмэлт урамшуулал болгон бид траффикийг дэмий үрэлгүйгээр, серверийг ачаалахгүйгээр байнга "агаар сонсох" боломжтой.

    Анхаарна уу

    Эдгээр давуу талуудыг давуу тал гэж үзэж болно гэдгийг би даруй мэдэгдэнэ зөвхөн тодорхой ангиллын төслүүдэд зориулагдсан, Бид хаана байна бид баттай мэднэ, хэрэглэгч ямар толь бичиг, ямар дүрэмтэй ажиллах вэ. Өөрөөр хэлбэл, бид дурын текстийг (жишээлбэл, SMS мессеж эсвэл хайлтын асуулга) таних шаардлагагүй болно. Үгүй бол үүл таних нь зайлшгүй юм.

    Тиймээс Android нь интернетгүйгээр яриаг таньж чадна!
    Тийм ээ, тийм ... Зөвхөн JellyBean дээр. Зөвхөн хагас метрээс илүүгүй. Мөн энэ хүлээн зөвшөөрөлт нь ижил диктант бөгөөд зөвхөн илүү жижиг загварыг ашигладаг. Тиймээс бид үүнийг удирдаж, тохируулах боломжгүй. Дараагийн удаа тэр бидэнд юу буцаж ирэх нь тодорхойгүй байна. SMS-ийн хувьд ч зөв!

    Бид юу хийх вэ?

    Бид маш хямд Android ухаалаг гар утас, таблет, бугуйн цагнуудад хэдхэн метрээс, тэр ч байтугай хямд тоормосны хог хаягдлаас үнэн зөв, хурдан ажиллах боломжтой гэр ахуйн цахилгаан хэрэгсэлд дуут алсын удирдлага хэрэгжүүлэх болно.
    Логик нь энгийн, гэхдээ маш практик байх болно. Бид микрофоныг идэвхжүүлж, нэг буюу хэд хэдэн төхөөрөмжийн нэрийг хэлнэ. Аппликешн нь тэдгээрийг таньж, одоогийн төлөвөөс хамааран асаах эсвэл унтраадаг. Нэг бол тэднээс төр хүлээн авч, эмэгтэй хүний ​​аятайхан хоолойгоор дууддаг. Жишээлбэл, өрөөний одоогийн температур.

    Маш олон практик хэрэглээ

    Өглөө нь тэд нүдээ нээлгүй ухаалаг утасныхаа дэлгэцийг орны дэргэдэх ширээн дээр алгадаад "Өглөөний мэнд!" - скрипт эхэлж, кофе чанагч асч, дуугарч, аятайхан хөгжим сонсогдож, хөшиг нь салж байна.
    Ханан дээрх бүх өрөөнд хямд (2 мянга, илүүгүй) ухаалаг гар утсыг өлгө. Бид ажлаа тараад гэртээ харьж, хоосон орон зайд "Ухаалаг гэр! Гэрэл, ТВ! -Цаашид яах бол, хэлэх шаардлагагүй гэж бодож байна.

    Транскрипци



    Дүрэм нь юуг тодорхойлдог хэрэглэгч юу хэлж чадах вэ. Pocketsphinx-ийг мэдэхийн тулд зэрэгтэр үүнийг дуудах болно, дүрмийн үг бүрийг харгалзах хэлний загварт хэрхэн сонсогдож байгааг бичих шаардлагатай. өөрөөр хэлбэл транскрипциүг бүр. гэж нэрлэдэг үгсийн сан.

    Транскрипцийг тусгай синтакс ашиглан тайлбарладаг. Жишээлбэл:
    smart uu m n ay j house d oo m

    Зарчмын хувьд ямар ч төвөгтэй зүйл байхгүй. Транскрипцийн давхар эгшиг нь стрессийг илэрхийлдэг. Хос гийгүүлэгч нь зөөлөн гийгүүлэгч, араас нь эгшиг ордог. Орос хэлний бүх дуу авианы бүх боломжит хослолууд.

    Хэрэглэгч өөрийн төхөөрөмжид ямар нэр өгөхийг бид урьдчилан мэдэхгүй тул програмынхаа бүх транскрипцийг урьдчилан тайлбарлаж чадахгүй нь тодорхой байна. Тиймээс бид Оросын авиа зүйн зарим дүрмийн дагуу ийм транскрипцийг шууд гаргах болно. Үүнийг хийхийн тулд та мөрийг оролт болгон хүлээн авч, түүний зөв транскрипцийг үүсгэх боломжтой PhonMapper классыг хэрэгжүүлж болно.

    Дуут идэвхжүүлэлт

    Энэ нь яриа таних хөдөлгүүр нь урьдчилан тодорхойлсон хэллэгт (эсвэл хэллэг) хариу үйлдэл үзүүлэхийн тулд байнга "агаарыг сонсох" чадвар юм. Бусад бүх дуу чимээ, яриаг устгах болно. Энэ нь дүрмээ тайлбарлаж, микрофоноо асаахтай адил зүйл биш юм. Би энд энэ даалгаврын онол, хэрхэн ажилладаг механикийн талаар ярихгүй. Саяхан Pocketsphinx дээр ажиллаж байгаа программистууд ийм функцийг хэрэгжүүлсэн бөгөөд одоо үүнийг API дээр ашиглах боломжтой гэдгийг хэлье.

    Нэг зүйлийг заавал дурдах нь зүйтэй. Идэвхжүүлэх хэллэгийн хувьд та зөвхөн транскрипцийг зааж өгөхөөс гадна тохирох үгийг сонгох хэрэгтэй. мэдрэмжийн босго утга. Хэт бага утга нь олон худал эерэг үр дүнд хүргэх болно (энэ нь та идэвхжүүлэх хэллэгийг хэлээгүй, гэхдээ систем үүнийг таньдаг). Мөн хэт өндөр - дархлаа. Тиймээс энэ тохиргоо нь онцгой ач холбогдолтой юм. Ойролцоогоор утгын хүрээ - 1e-1-ээс 1e-40 хүртэл идэвхжүүлэх хэллэгээс хамаарна.

    Ойролцоох идэвхжүүлэлт

    Энэ даалгавар нь манай төслийн онцлог бөгөөд хүлээн зөвшөөрөхтэй шууд холбоогүй юм. Кодыг үндсэн үйл ажиллагаанаас шууд харж болно.
    Тэр ойлгож байна SensorEventListenerойртох мөчид (мэдрэгчийн утга нь хамгийн их утгаас бага байна) таймерыг эхлүүлж, мэдрэгч түгжигдсэн хэвээр байгаа эсэхийг тодорхой хугацааны дараа шалгана. Энэ нь хуурамч эерэг байдлаас зайлсхийхийн тулд хийгддэг.
    Мэдрэгч дахин хаагдахгүй бол бид танихыг зогсоож, үр дүнг нь авна (доорх тайлбарыг үзнэ үү).

    Бид хүлээн зөвшөөрч эхэлдэг

    Pocketsphinx нь таних процессыг тохируулах, ажиллуулахад тохиромжтой API-ээр хангадаг. Эдгээр нь ангиуд юм SpechRecognizerболон SpeechRecognizerSetup.
    Тохируулга болон танихыг эхлүүлэх нь дараах байдалтай байна.

    PhonMapper phonMapper = шинэ PhonMapper(getAssets().open("dict/ru/hotwords")); Дүрмийн дүрэм = шинэ Дүрэм(нэр, phonMapper); grammar.addWords(холбох үг); DataFiles dataFiles = шинэ DataFiles(getPackageName(), "ru"); Файл hmmDir = шинэ Файл(dataFiles.getHmm()); Файлын dict = шинэ Файл(dataFiles.getDict()); Файл jsgf = шинэ Файл(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) .getRecog); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

    Энд бид эхлээд бүх шаардлагатай файлуудыг диск рүү хуулна (Pocketpshinx нь диск дээрх акустик загвар, дүрмийн болон транскрипцийн толь бичиг шаарддаг). Дараа нь таних хөдөлгүүр өөрөө тохируулагдсан болно. Загвар болон толь бичгийн файлд хүрэх замууд, түүнчлэн зарим параметрүүдийг (идэвхжүүлэх хэллэгийн мэдрэмжийн босго) зааж өгсөн болно. Дараа нь дүрмийн файл руу орох зам, мөн идэвхжүүлэх хэллэгийг тохируулна.

    Энэ кодоос харахад нэг хөдөлгүүр нь дүрмийн болон идэвхжүүлэх хэлцийг нэгэн зэрэг танихаар тохируулагдсан байна. Яагаад үүнийг хийж байна вэ? Ингэснээр бид одоо таних шаардлагатай зүйлсийн хооронд хурдан шилжих боломжтой болно. Идэвхжүүлсэн хэллэгийг таних үйл явцыг эхлүүлэх нь дараах байдалтай байна.

    MRecognizer.startListening(KWS_SEARCH);
    Үүнтэй адилаар - өгөгдсөн дүрмийн дагуу яриа таних:

    MRecognizer.startListening(COMMAND_SEARCH, 3000);
    Хоёр дахь аргумент (заавал биш) бол хэн ч юу ч хэлэхгүй бол таних нь автоматаар дуусах миллисекундын тоо юм.
    Таны харж байгаагаар та хоёр асуудлыг шийдэхийн тулд зөвхөн нэг хөдөлгүүр ашиглаж болно.

    Хүлээн зөвшөөрөх үр дүнг хэрхэн авах вэ

    Таних үр дүнг авахын тулд та интерфэйсийг хэрэгжүүлдэг үйл явдлын сонсогчийг зааж өгөх ёстой Таних Сонсогч.
    Энэ нь үйл явдлуудын аль нэг нь тохиолдоход халаасны фен гэж нэрлэдэг хэд хэдэн аргуудтай:
    • onBeginningOfSpeech- хөдөлгүүр ямар нэгэн чимээ сонссон, магадгүй энэ нь яриа (эсвэл үгүй ​​ч байж магадгүй)
    • onEndOfSpeech- дуу дууслаа
    • onPartialResult- дунд шатны хүлээн зөвшөөрөх үр дүн байна. Идэвхжүүлэх хэллэгийн хувьд энэ нь ажилласан гэсэн үг. Аргумент Таамаглал
    • onResult- хүлээн зөвшөөрөх эцсийн үр дүн. Энэ аргыг дуудсаны дараа дуудах болно Зогсцагт Яриа танигч. Аргумент Таамаглалтаних өгөгдлийг агуулсан (мөр ба оноо)

    onPartialResult болон onResult аргуудыг ямар нэг байдлаар хэрэгжүүлснээр таних логикийг өөрчилж эцсийн үр дүнд хүрч чадна. Үүнийг манай аппликешнд хэрхэн хийснийг энд харуулав.

    @Олон нийтийн хүчингүйг хүчингүй болгох onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @PartialRecognizer onEndOfSpeech() ( хэрэв (таамаглал == null) буцаана; Мөр текст = hypothesis.getHypstr(); хэрэв (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) өөр ( Log.d(TAG, текст); ) ) @Override public void onResult(Hypothesis hypothesis) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); Мөр текст = таамаглал != null :Hypothesis TAG(Гапотезийн таамаглал) mMicView.setBackgroundResource(R.drawable.background_big_mic); , "onResult" + text); хэрэв (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( хэрэв (текст != null) ( Toast.makeText(энэ, текст, Toast.LENGTH_SHORT).show(); процесс(текст) ); ) mRecognizer.startListening(KWS_SEARCH); ) )

    Бид onEndOfSpeech үйл явдлыг хүлээн авах үед, хэрэв бид нэгэн зэрэг гүйцэтгэх тушаалыг хүлээн зөвшөөрвөл таних үйлдлийг зогсоох шаардлагатай бөгөөд үүний дараа onResult шууд дуудагдах болно.
    OnResult дээр та дөнгөж сая танигдсан зүйлийг шалгах хэрэгтэй. Хэрэв энэ нь тушаал бол та үүнийг гүйцэтгэхийн тулд ажиллуулж, идэвхжүүлэх хэллэгийг танихын тулд хөдөлгүүрийг солих хэрэгтэй.
    onPartialResult-д бид зөвхөн идэвхжүүлэх хэллэгийг таних сонирхолтой байдаг. Хэрэв бид үүнийг илрүүлбэл командыг таних үйл явцыг шууд эхлүүлнэ. Энэ нь дараах байдалтай байна.

    Хувийн синхрончлогдсон хүчингүй startRecognition() (хэрэв (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) буцах; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSICERTone. TONE_CDMA_PIP, 200); post(400, new Runnable() ( @Override public void run() ( mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, ".TAG0), ". командууд"); post(4000, mStopRecognitionCallback); ) )); )
    Энд бид эхлээд хэрэглэгчийг сонссон, түүний тушаалд бэлэн байгаа гэдгээ мэдэгдэхийн тулд жижиг дохиог тоглуулдаг. Энэ хугацаанд микрофоныг унтраасан байх ёстой. Тиймээс бид бага зэргийн завсарлага авсны дараа таних ажлыг эхлүүлнэ (дохионы цуурайг сонсохгүйн тулд дохионы үргэлжлэх хугацаанаас арай урт). Энэ нь мөн хэрэглэгч хэтэрхий удаан яривал танихыг зогсооход хүргэдэг хэлхээг эхлүүлдэг. Энэ тохиолдолд 3 секунд байна.

    Хүлээн зөвшөөрөгдсөн мөрийг хэрхэн команд болгон хувиргах вэ

    За, бүх зүйл аль хэдийн тодорхой програмд ​​зориулагдсан байдаг. Нүцгэн жишээний хувьд бид зүгээр л шугамнаас төхөөрөмжийн нэрийг гаргаж аваад, хүссэн төхөөрөмжөө хайж олоод ухаалаг гэрийн хянагч руу HTTP хүсэлтийг ашиглан төлөвийг нь өөрчилдөг, эсвэл одоогийн төлөвийг нь мэдээлдэг. термостат). Энэ логикийг Controller ангиас харж болно.

    Яриаг хэрхэн нэгтгэх вэ

    Ярианы синтез нь таних урвуу үйлдэл юм. Энд эсрэгээр та текстийн мөрийг яриа болгон хувиргах хэрэгтэй бөгөөд ингэснээр хэрэглэгч үүнийг сонсох боломжтой болно.
    Термостатын хувьд бид Андройд төхөөрөмждөө одоогийн температурыг хэлэх ёстой. API ашиглах TextToSpeechҮүнийг хийхэд маш энгийн (Орос хэлний үзэсгэлэнтэй эмэгтэй TTS-ийн Google-д баярлалаа):

    Хувийн хүчингүй яриа(Мөр текст) ( синхрончлогдсон (mSpeechQueue) (mRecognizer.stop(); mSpeechQueue.add(текст); HashMap params = шинэ HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "үнэн"); mTextToSpeech.speak(текст, TextToSpeech.QUEUE_ADD, параметрүүд); ) )

    Би үүнийг улиг болсон гэж хэлэх байх, гэхдээ синтезийн процессын өмнө танихыг идэвхгүй болгох шаардлагатай. Зарим төхөөрөмж (жишээлбэл, бүх Samsungs) дээр микрофон сонсож, нэгэн зэрэг ямар нэг зүйлийг нэгтгэх нь ерөнхийдөө боломжгүй юм.
    Ярианы синтезийн төгсгөлийг (өөрөөр хэлбэл синтезаторын текстийг ярих үйл явцын төгсгөлийг) сонсогчдод хянах боломжтой.

    Хувийн эцсийн TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String utteranceId) (синхрончлогдсон (mSpeechQueue)) (emp. KWS_SEARCH); ))) )))

    Үүний дотор бид синтезийн дараалалд өөр зүйл байгаа эсэхийг шалгаж, өөр зүйл байхгүй бол идэвхжүүлэх хэлц таних функцийг асаана.

    Тэгээд бүгд үү?

    Тийм ээ! Таны харж байгаагаар Pocketsphinx гэх мэт гайхалтай төслүүдийн ачаар төхөөрөмж дээр яриаг хурдан бөгөөд үнэн зөв таних нь тийм ч хэцүү биш юм. Энэ нь дуут командыг танихтай холбоотой асуудлыг шийдвэрлэхэд ашиглаж болох маш хялбар API-г өгдөг.

    Энэ жишээн дээр бид бүрэн зөв даалгаврыг хүлээн зөвшөөрөв. ухаалаг гэрийн төхөөрөмжүүдийн дуут удирдлага. Орон нутагт хүлээн зөвшөөрөгдсөний ачаар бид маш өндөр хурдтай ажиллаж, алдааг багасгасан.
    Ижил кодыг дуу хоолойтой холбоотой бусад ажлуудад ашиглаж болох нь ойлгомжтой. Энэ нь ухаалаг гэр байх албагүй.

  • дуут удирдлага
  • дуут хөдөлгүүр
  • Шошго нэмэх

    Бүтээгдэхүүн ба технологи:

    Visual Studio, C#, .NET ярианы сангууд

    Нийтлэлд дараахь зүйлийг тусгасан болно.

    • консолын програмд ​​яриа таних дэмжлэгийг нэмэх;
    • танигдахуйц ярианы боловсруулалт;
    • яриа таних номын санг суурилуулах;
    • Microsoft.Speech болон System.Speech-ийг харьцуулах;
    • Windows Forms програмд ​​яриа таних дэмжлэгийг нэмэх.

    Windows Phone Cortana буюу хэл ярианы тусламжтайгаар идэвхжүүлдэг хувийн туслах (түүнчлэн жимсний компанийн хамтрагч гэдгийг дэмий дурдаж болохгүй) бий болсноор хэл яриаг идэвхжүүлдэг програмууд програм хангамж хөгжүүлэхэд улам бүр чухал болж байна. Энэ нийтлэлд би Windows консолын програмууд, Windows Forms програмууд болон Windows Presentation Foundation (WPF) дээр яриа таних, нэгтгэх үйлдлийг хэрхэн эхлүүлэхийг харуулах болно.

    Та мөн Windows Phone програмууд, ASP.NET вэб програмууд, Windows Store програмууд, Windows RT болон Xbox Kinect-д ярианы чадварыг нэмж болно гэдгийг анхаарна уу, гэхдээ техник нь энэ нийтлэлд дурдсанаас өөр байна.

    Энэ нийтлэлд яг юу ярихыг ойлгох сайн арга бол хоёр өөр демо програмын дэлгэцийн агшинг харах явдал юм. будаа. нэгболон 2 . Консол програмыг ажиллуулсны дараа будаа. нэгтэр даруй "Би сэрүүн байна" гэсэн хэллэгийг хэлдэг. Мэдээжийн хэрэг, та энэ нийтлэлийг уншиж байхдаа демо програмыг сонсох боломжгүй тул компьютерийн хэлж байгаа текстийг харуулдаг. Дараа нь хэрэглэгч "Яриа асаах" командыг хэлдэг. Демо програм нь хүлээн зөвшөөрөгдсөн текстээр хариу өгч, дараа нь хоёр тоо нэмэх хүсэлтийг дотооддоо сонсож, хариу өгдөг.

    Цагаан будаа. 1. Консол программ дахь яриа таних, нэгтгэх


    Цагаан будаа. 2. Windows Forms программ дахь яриа таних

    Хэрэглэгч програмаас нэг, хоёр, дараа нь хоёр, гурав нэмэхийг хүссэн. Аппликейшн нь ярианы командуудыг таньж, дуу хоолойгоор хариулт өгсөн. Дараа нь би яриа таних аргыг ашиглах илүү ашигтай аргуудыг тайлбарлах болно.

    Дараа нь хэрэглэгч "Яриа унтраах" гэж хэлэв - дуут тушаал нь тоо нэмэх командыг сонсохыг идэвхгүй болгодог боловч яриа танихыг бүрэн унтраадаггүй. Энэ аман тушаалын дараа нэг, хоёрыг нэмэх дараагийн командыг үл тоомсорлов. Эцэст нь хэрэглэгч командуудыг сонсохыг дахин идэвхжүүлж, "Klatu barada nikto" гэсэн утгагүй командыг хэлсэн нь програм нь яриа танихыг бүрэн идэвхгүй болгож, өөрийгөө зогсоох тушаал гэж хүлээн зөвшөөрсөн.

    Дээр будаа. 2нь дамми яриа идэвхжүүлсэн Windows Forms програмыг харуулж байна. Энэ аппликейшн нь ярианы командуудыг таньдаг боловч дуут гаралтаар хариу үйлдэл үзүүлэхгүй. Аппликейшнийг анх удаа эхлүүлэхэд Speech On гэсэн нүдийг сонгоогүй нь яриа таних идэвхгүй байгааг харуулж байна. Хэрэглэгч энэ нүдийг сонгоод "Сайн уу" гэж хэлэв. Програм нь цонхны доод талд байгаа ListBox удирдлагад хүлээн зөвшөөрөгдсөн текстийг харуулах замаар хариу үйлдэл үзүүлсэн.

    Дараа нь хэрэглэгч "Текстийн хайрцаг 1-ийг улаан болгож тохируулна уу" гэж хэлсэн. Аппликейшн нь яриаг таньж, "Set text box 1 red" гэж хариулсан нь бараг л (гэхдээ тийм биш) хэрэглэгчийн хэлсэнтэй яг таарч байна. Хэдийгээр асаалттай будаа. 2Та үүнийг харахгүй байна, цонхны дээд талд байгаа TextBox удирдлага дахь текст үнэхээр улаан өнгөтэй байна.

    Дараа нь хэрэглэгч: "Текстийн хайрцгийг 1 цагаан болгож тохируулна уу" гэж хэлсэн. Аппликешн үүнийг "текст хайрцаг 1 цагаанаар тохируулах" гэж хүлээн зөвшөөрч, үүнийг хийсэн. Эцэст нь хэрэглэгч "Баяртай" гэж хэлээд програм нь энэ текстийг харуулсан боловч Windows Forms дээр юу ч хийгээгүй, гэхдээ жишээ нь Speech On тугийг арилгах боломжтой.

    Синтезаторын объектыг ашиглах нь маш энгийн.

    Дараах хэсгүүдэд би танд шаардлагатай .NET ярианы сангуудыг суулгах зэрэг үзүүлэн программуудыг хоёуланг нь үүсгэх үйл явцыг танд өгөх болно. Энэ нийтлэлд таныг ядаж дунд түвшний програмчлалын чадвартай гэж үзсэн боловч яриа таних, нэгтгэх талаар юу ч байхгүй.

    Консолын програмд ​​яриа таних дэмжлэгийг нэмж байна

    Үзүүлсэн демо үүсгэхийн тулд будаа. нэг, Би Visual Studio-г ажиллуулж, ConsoleSpeech нэртэй шинэ C# консол программыг үүсгэсэн. Би ярианы хэрэгслийг Visual Studio 2010 болон 2012 дээр амжилттай ашигласан ч харьцангуй сүүлийн үеийн хувилбарууд ажиллах ёстой. Загварын кодыг засварлагч руу ачаалсны дараа би Solution Explorer цонхны Program.cs файлын нэрийг илүү тодорхой ConsoleSpeechProgram.cs болгон өөрчилсөн бөгөөд Visual Studio надад зориулж Program классын нэрийг өөрчилсөн.

    Дараа нь би C:\ProgramFiles (x86)\Microsoft SDKs\Speech\v11.0\Assembly дотор байрлах Microsoft.Speech.dll файлын лавлагааг нэмсэн. Энэ DLL миний компьютерт байхгүй байсан тул татаж авах шаардлагатай болсон. Програмд ​​яриа таних, синтез нэмэхэд шаардлагатай файлуудыг суулгах нь тийм ч энгийн зүйл биш юм. Би дараагийн хэсэгт суулгах процессыг дэлгэрэнгүй тайлбарлах болно, гэхдээ одоогоор таны системд Microsoft.Speech.dll байгаа гэж үзье.

    Ярианы DLL-д лавлагаа нэмснээр би системийн нэрийн орон зайг зааж буй дээд түвшний нэгээс бусад кодын дээд талд байгаа бүх хэллэгийг устгасан. Дараа нь би Microsoft.Speech.Recognition, Microsoft.Speech.Synthesis, System.Globalization нэрийн орон зайд зориулсан мэдэгдлүүдийг нэмсэн. Эхний хоёр нэрийн орон зайг ярианы DLL-д буулгасан. Мөн System.Speech.Recognition, System.Speech.Synthesis гэх мэт нэрийн орон зай байдаг бөгөөд энэ нь төөрөгдүүлж болзошгүйг анхаарна уу. Би тэдний хоорондын ялгааг удахгүй тайлбарлах болно. Даяаршлын нэрийн орон зай нь анхдагчаар боломжтой байсан бөгөөд төсөлд шинээр лавлагаа нэмэх шаардлагагүй байв.

    Демо консол програмын эх кодыг бүхэлд нь эндээс олж болно будаа. 3, мөн энэ нийтлэлийг дагалдан ирсэн эх сурвалжийн багцад бас байдаг. Гол санааг аль болох нуун дарагдуулахгүйн тулд би бүх стандарт алдааг арилгасан.

    Цагаан будаа. 3. Демо консол програмын эх код

    системийг ашиглах; Microsoft.Speech.Recognition ашиглах; Microsoft.Speech.Synthesis ашиглах; System.Globalization ашиглах; нэрийн орон зай ConsoleSpeech ( анги ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); статик SpeechRecognitionEngine sre; статик bool хийгдсэн = худал; статик bool speakOn = үнэн; статик хүчингүй Main (string argutte.Argutte. ("\n(Ярих: Би сэрүүн байна)"); ss.Speak("Би сэрүүн"); CultureInfo ci = шинэ CultureInfo("en-us"); sre = шинэ SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice( ); sre.SpeechRecognized += sre_SpeechRecognized; Сонголтууд ch_StartStopCommands = шинэ сонголтууд(); ch_StartStopCommands.Add("яриа асаалттай"); ch_StartStopCommands.Add("яриа унтраасан"); ch_StartStopCommands. = new GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); Grammar g_StartStop = шинэ Grammar(gb_StartStop); Сонголтууд ch_Numbers = new Choices(); ch_Numbers.Add("1"); ch_Numbers."Number_"Nu. Add("3"); ch_Numbers.Add("4"); GrammarBuilder gb_WhatI sXplusY = шинэ GrammarBuilder(); gb_WhatIsXplusY.Append("Юу вэ"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("нэмэх"); gb_WhatIsXplusY.Append(ch_Numbers); Grammar g_WhatIsXplusY = new Grammar(gb_WhatIsXplusY); sre.LoadGrammarAsync(g_StartStop); sre.LoadGrammarAsync(g_WhatIsXplusY); sre.RecognizeAsync(RecognizeMode.Multiple); байхад (хийсэн == худал) ( ; ) Console.WriteLine("\nХит< enter >бүрхүүлийг хаахын тулд\n"); Console.ReadLine(); ) catch (Exception ex) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) ) // Үндсэн статик хүчингүй sre_SpeechRecognized(объект илгээгч, SpeechRecognizedEventArgs e) ) ( string txt = e.Result.Text; float confidence = e.Result.Confidence; Console.WriteLine("\nТанигдсан: " + txt); хэрэв (итгэлцэл)< 0.60) return; if (txt.IndexOf("speech on") >= 0) ( Console.WriteLine("Яриа одоо асаалттай"); speakOn = үнэн; ) if (txt.IndexOf("яригаа унтраасан") >= 0) ( Console.WriteLine("Яриа одоо унтарсан"); speakOn = false; ) if (speechOn == false) буцах; if (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) (((SpeechRecognitionEngine)sender).RecognizeAsyncCancel(); хийсэн = үнэн; Console.WriteLine("(Ярих: Баяртай)"); ss.Speak("Баяртай"); ) if (txt.IndexOf("Юу") >= 0 && txt.IndexOf("нэмэх") >= 0) ( string үгс = txt.Split(" "); int num1 = int.Parse(үг); int num2 = int.Parse(үг); int нийлбэр = тоо1 + тоо2; Console.WriteLine("(Ярих: " + үг + " нэмэх " + үг + " тэнцүү байна " + sum + ")"); ss.SpeakAsync(үгс + " нэмэх " + үг + " тэнцүү " + нийлбэр); ) ) // sre_SpeechRecognized ) // Програм ) // ns

    Хэрэглээний мэдэгдлийн дараа демо код дараах байдлаар эхэлнэ.

    нэрийн орон зай ConsoleSpeech ( анги ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); статик SpeechRecognitionEngine sre; static bool хийгдсэн = худал; static bool speakOn = true; static void Main (string ... args)

    Ангийн түвшний SpeechSynthesizer объект нь яриаг нэгтгэх програмыг идэвхжүүлдэг. SpeechRecognitionEngine объект нь хэрэглүүрт ярьж буй үг, хэллэгийг сонсож, таних боломжийг олгодог. Хийсэн логикийн хувьсагч нь програм бүхэлдээ хэзээ дуусахыг тодорхойлдог. speakOn логикийн хувьсагч нь програмаас гарах командаас бусад командыг програм сонсох эсэхийг хянадаг.

    Энд байгаа санаа нь консолын программ нь гарны оролтыг хүлээн авдаггүй тул командыг үргэлж сонсдог. Гэсэн хэдий ч, speakOn нь худал бол зөвхөн програмаас гарах командыг хүлээн зөвшөөрч, гүйцэтгэнэ; бусад командууд танигдсан боловч үл тоомсорлодог.

    Үндсэн арга нь дараах байдлаар эхэлнэ.

    оролдох ( ss.SetOutputToDefaultAudioDevice(); Console.WriteLine("\n(Ярих: Би сэрүүн байна)"); ss.Speak("Би сэрүүн байна");

    SpeechSynthesizer объектыг зарлах үед түүний жишээ үүсгэгдсэн. Синтезаторын объектыг ашиглах нь маш энгийн. SetOutputToDefaultAudioDevice арга нь гаралтыг таны компьютерт холбогдсон чанга яригч руу илгээдэг (гаралтыг мөн файл руу илгээж болно). Speak арга нь мөрийг аваад дараа нь ярьдаг. Ийм л амархан.

    Яриа таних нь синтез хийхээс хамаагүй хэцүү байдаг. Үндсэн арга нь танигч объект үүсгэх замаар үргэлжилнэ:

    CultureInfo ci = шинэ CultureInfo("en-us"); sre = шинэ SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice(); sre.SpeechRecognized += sre_SpeechRecognized;

    CultureInfo объект нь эхлээд танигдах хэлийг, энэ тохиолдолд АНУ-ын англи хэлийг зааж өгдөг. CultureInfo объект нь Глобалчлалын нэрийн орон зайд байгаа бөгөөд бид үүнийг use мэдэгдлээр лавласан. Дараа нь SpeechRecognitionEngine бүтээгчийг дуудсаны дараа дуут оролтыг өгөгдмөл аудио төхөөрөмж, ихэвчлэн микрофонд хуваарилдаг. Ихэнх зөөврийн компьютерууд нь суурилуулсан микрофонтой байдаг ч ширээний компьютерууд нь гадаад микрофон (одоо үед ихэвчлэн чихэвчтэй хослуулдаг) шаарддаг гэдгийг анхаарна уу.

    Танигч объектын гол арга бол SpeechRecognized үйл явдлын зохицуулагч юм. Visual Studio-г ашиглах үед хэрэв та "sre.SpeechRecognized +=" гэж бичээд хэдхэн секунд хүлээх юм бол IntelliSense таны илэрхийлэлийг үйл явдал зохицуулагчийн нэрээр автоматаар дуусгах болно - sre_SpeechRecognized. Санал болгож буй сонголтыг зөвшөөрөхийн тулд Tab товчийг дарж, энэ нэрийг анхдагчаар ашиглахыг зөвлөж байна.

    Сонголтууд ch_Тоонууд = шинэ Сонголтууд(); ch_Numbers.Add("1"); ch_Numbers.Add("2"); ch_Numbers.Add("3"); ch_Numbers.Add("4"); // техникийн үүднээс авч үзвэл, // энэ нь Add(new string ( "4" )); GrammarBuilder gb_WhatIsXplusY = шинэ GrammarBuilder(); gb_WhatIsXplusY.Append("Юу вэ"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("нэмэх"); gb_WhatIsXplusY.Append(ch_Numbers); Grammar g_WhatIsXplusY = new Grammar(gb_WhatIsXplusY);

    Энд байгаа гурван үндсэн объект нь Сонголтуудын багц, GrammarBuilder загвар, хяналтын дүрэм юм. Би танихын тулд дүрмээ бүтээхдээ таних ёстой зүйлийнхээ тодорхой жишээг жагсааж эхэлдэг. "Нэг нэмэх хоёр хэд вэ?" гэж хэлээрэй. болон "Гурав дээр дөрөв нь хэд вэ?".

    Дараа нь би "Юу юм бэ" гэх мэт тохирох ерөнхий загварыг тодорхойлдог нэмэх ? Загвар нь GrammarBuilder бөгөөд загварт дамжуулагдах тодорхой утгууд нь Сонголтуудын багц юм. Grammar объект нь загвар болон Сонголтуудыг багтаасан болно.

    Демо дээр би нэмэлтийг 1-ээс 4 хүртэл хязгаарлаж, Сонголтуудын багцад мөр болгон нэмнэ. Илүү үр дүнтэй арга:

    string numbers = new string( "1", "2", "3", "4" ); Сонголтууд ch_Numbers = шинэ Сонголтууд(тоо);

    Би танд хоёр шалтгааны улмаас Сонголтуудыг бий болгох үр ашиг багатай аргыг танилцуулж байна. Нэгдүгээрт, нэг мөр нэмэх нь яриа таних бусад жишээн дээр миний харсан цорын ганц арга байсан. Хоёрдугаарт, та нэг мөр нэмэх нь огт ажиллахгүй байх ёстой гэж бодож магадгүй; Visual Studio IntelliSense нь Нэмэх хэт ачааллын аль нэг нь параметрийн төрлийн мөр хэлцүүдийн параметрийг авдаг болохыг бодит цаг хугацаанд харуулж байна. Хэрэв та params түлхүүр үгийг анзаараагүй бол Add арга нь зөвхөн мөрийн массивыг хүлээн авдаг, гэхдээ нэг мөр биш гэж бодож байсан байх. Гэхдээ энэ нь тийм биш: тэр хоёуланг нь хүлээн зөвшөөрдөг. Би танд массив дамжуулахыг зөвлөж байна.

    Дараалсан тоонуудаас сонголтын багц үүсгэх нь зарим талаараа онцгой тохиолдол бөгөөд танд дараах программчлагдсан аргыг ашиглах боломжийг олгоно:

    мөрийн тоо = шинэ мөр; хувьд (int i = 0; i< 100; ++i) numbers[i] = i.ToString(); Choices ch_Numbers = new Choices(numbers);

    GrammarBuilder-ийн слотуудыг дүүргэх сонголтуудыг үүсгэсний дараа үзүүлэн нь GrammarBuilder, дараа нь хяналтын Grammar-г үүсгэдэг:

    GrammarBuilder gb_WhatIsXplusY = шинэ GrammarBuilder(); gb_WhatIsXplusY.Append("Юу вэ"); gb_WhatIsXplusY.Append(ch_Numbers); gb_WhatIsXplusY.Append("нэмэх"); gb_WhatIsXplusY.Append(ch_Numbers); Grammar g_WhatIsXplusY = new Grammar(gb_WhatIsXplusY);

    Демо програм нь эхлүүлэх, зогсоохтой холбоотой командуудын дүрмийн дүрмийг үүсгэхдээ ижил төстэй загварыг ашигладаг.

    Сонголтууд ch_StartStopCommands = шинэ Сонголтууд(); ch_StartStopCommands.Add("яриа асаалттай"); ch_StartStopCommands.Add("яриа унтраах"); ch_StartStopCommands.Add("klatu barada nikto"); GrammarBuilder gb_StartStop = шинэ GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); Grammar g_StartStop = new Grammar(gb_StartStop);

    Дүрмийг маш уян хатан байдлаар тодорхойлж болно. Энд "яриа асаах", "ярих унтраах", "клату барада никто" гэсэн командууд нь логик холбоотой тул нэг дүрмийн хүрээнд байршдаг. Эдгээр гурван тушаалыг гурван өөр дүрмээр тодорхойлж болох юмуу "яриа асаах", "ярих унтраах" гэсэн командуудыг нэг дүрмэнд, "klatu barada nikto" командыг хоёрдугаарт оруулж болно.

    Бүх дүрмийн объектыг үүсгэсний дараа та тэдгээрийг яриа танигч руу оруулах ба яриа таних функц идэвхжсэн болно.

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

    RecognizeMode.Multiple аргумент нь нэгээс олон дүрмийн мэдлэгтэй үед хэрэг болох бөгөөд энэ нь хамгийн энгийн программаас бусад бүх программ дээр байх болно. Үндсэн арга нь дараах байдлаар төгсдөг.

    байхад (хийсэн == худал) ( ; ) Console.WriteLine("\nХит< enter >бүрхүүлийг хаахын тулд\n"); Console.ReadLine(); ) catch (Exception ex) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) ) // Үндсэн

    Хачирхалтай харагдах хоосон while давталт нь консолын програмын бүрхүүлийг ажиллуулдаг. Яриа таних үйл явдал зохицуулагч ангийн түвшний логикийн гүйцэтгэсэн утгыг үнэн гэж тохируулснаар давталт дуусгавар болно.

    Яриа таних боловсруулалт

    Яриа танихтай холбоотой үйл явдлуудыг зохицуулах код дараах байдлаар эхэлнэ.

    статик хүчингүй sre_SpeechRecognized(объект илгээгч, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; хөвөх итгэл = e.Result.Confidence; Console.WriteLine("\nТанисан: " + txtce хэрэв);< 0.60) return; ...

    Хүлээн зөвшөөрөгдсөн текст нь SpeechRecognizedEventArgs объектын Result.Text шинж чанарт хадгалагдана. Эсвэл та Үр дүн.Үг багцыг ашиглаж болно. Result.Confidence шинж чанар нь 0.0-оос 1.0-ийн хооронд утгыг хадгалдаг бөгөөд энэ нь ярианы текст танигчтай холбоотой аливаа дүрэмтэй хэр нийцэж байгааг харуулсан ойролцоогоор тооцоолол юм. Демо програм нь үйл явдал зохицуулагчийг хүлээн зөвшөөрөгдсөн текстэд итгэх итгэл багатай текстийг үл тоомсорлохыг заадаг.

    Итгэлийн үнэ цэнэ нь таны дүрмийн нарийн төвөгтэй байдал, микрофоны чанар болон бусад хүчин зүйлээс ихээхэн хамаардаг. Жишээлбэл, хэрэв демо нь зөвхөн 1-ээс 4 хүртэлх тоог таних шаардлагатай бол миний компьютер дээрх итгэлийн утгууд нь ихэвчлэн 0.75 орчим байдаг. Гэхдээ дүрмийн хувьд 1-ээс 100 хүртэлх тоог таних ёстой бол итгэлийн утга нь ойролцоогоор 0.25 болж буурдаг. Товчхондоо, та яриа таних сайн үр дүнд хүрэхийн тулд өөртөө итгэх итгэлийн утгыг туршиж үзэх хэрэгтэй болдог.

    if (txt.IndexOf("яригаа унтраасан") >= 0) ( Console.WriteLine("Яриа одоо АСААЛТТАЙ"); speakOn = үнэн; ) if (txt.IndexOf("яригаа унтраасан") >= 0) ( Консол .WriteLine("Яриа одоо унтарсан"); speakOn = худал; ) if (speechOn == худал) буцаана;

    Эхэндээ энэ нь тийм ч тодорхой биш байж болох ч энэ логик нь та энэ талаар бодоход утга учиртай байх болно. Дараа нь нууц гарах командыг боловсруулна:

    if (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) (((SpeechRecognitionEngine)sender).RecognizeAsyncCancel(); хийсэн = үнэн; Console.WriteLine("(Ярих: Баяртай)"); ss.Speak("Баяртай"); )

    Яриа таних систем нь утгагүй үгсийг таньж чаддаг гэдгийг анхаарна уу. Хэрэв Grammar объект нь тухайн объектын толь бичигт байхгүй үгсийг агуулж байвал Grammar нь аль болох семантик эвристик ашиглан тэдгээр үгсийг тодорхойлохыг оролддог бөгөөд ихэвчлэн амжилттай байдаг. Тийм ч учраас би зөв "klaatu" (хуучин шинжлэх ухааны уран зөгнөлт киноны) оронд "klatu" -г ашигласан.

    Мөн та Grammar ("klatu barada nikto")-аар хүлээн зөвшөөрөгдсөн бүх текстийг боловсруулах шаардлагагүй гэдгийг анхаарна уу - та дүрмийн хэллэгийг ("klatu" ба "barada") өвөрмөц байдлаар тодорхойлох хангалттай мэдээлэлтэй байх хэрэгтэй.

    Хэрэв (txt.IndexOf("Юу") >= 0 && txt.IndexOf("нэмэх") >= 0) ( мөрийн үгс = txt.Split(" "); int num1 = int.Parse(үг); int num2 = int.Parse(words);int sum = num1 + num2;Console.WriteLine("(Ярих: " + үгс + " нэмэх " + үгс + " тэнцүү " + нийлбэр + ")"); ss.SpeakAsync(үг + " нэмэх " + үгс + " тэнцүү " + нийлбэр); ) ) // sre_SpeechRecognized ) // Програм ) // ns

    Үр дүн.Текст дэх текст нь жижиг жижиг том үсгээр ялгагдахыг анхаарна уу ("Юу" ба "юу"). Энэ хэллэгийг таньж мэдсэний дараа үүнийг тодорхой үг болгон задалж болно. Энэ тохиолдолд хүлээн зөвшөөрөгдсөн текст нь "Х нэмэх нь у гэж юу вэ" гэсэн хэлбэртэй байна, тиймээс "Юу" гэж үгээр байрлуулж, нэмсэн хоёр тоог (мөр хэлбэрээр) үг, үгээр хадгална.

    Номын сангуудыг суулгаж байна

    Демо програмын тайлбар нь таны компьютерт шаардлагатай бүх ярианы санг суулгасан гэж үздэг. Демо программ үүсгэх, ажиллуулахын тулд та дөрвөн багцыг суулгах хэрэгтэй: SDK (Visual Studio дээр демо үүсгэх боломжийг олгодог), ажиллах хугацаа (демо-г үүсгэсний дараа ажиллуулдаг), хүлээн зөвшөөрөгдсөн, нэгтгэсэн (програмаар дуудагддаг) хэл.

    SDK-г суулгахын тулд вэбээс "Speech Platform 11 SDK" гэж хайна уу. Энэ нь таныг Microsoft-ын Татаж авах төвийн зөв хуудас руу аваачна ( будаа. 4). Татаж авах товчийг дарснаар та дээрх сонголтуудыг харах болно будаа. 5. SDK нь 32 болон 64 битийн хувилбаруудтай. Таны системийн битээс үл хамааран 32 битийн хувилбарыг ашиглахыг би танд зөвлөж байна. 64 битийн хувилбар нь зарим програмуудтай харьцдаггүй.


    Цагаан будаа. 4. Microsoft Татаж авах Төв дэх SDK суулгах үндсэн хуудас


    Цагаан будаа. 5. Speech SDK-г суулгаж байна

    Танд x86 (32 битийн системүүдийн хувьд) доор байгаа ганц .msi файлаас өөр юу ч хэрэггүй. Энэ файлыг сонгоод Next товчийг дарснаар суулгагчийг эндээс шууд ажиллуулж болно. Ярианы сангууд суулгац дууссаны талаар тийм ч их санал хүсэлт өгдөггүй тул амжилтын тухай мессеж хайх хэрэггүй.


    Цагаан будаа. 6. Ажиллах цагийг суулгаж байна

    SDK-тэй ижил платформ хувилбар (демо хувилбарт 11), битийн гүн (32 эсвэл 64) сонгох нь туйлын чухал юм. Дахин хэлэхэд, та 64 битийн системтэй байсан ч би 32 битийн хувилбарыг санал болгож байна.

    Дараа нь та таних хэлийг тохируулж болно. Татаж авах хуудас энд байна будаа. 7. Демо нь MSSpeech_SR_en-us_TELE.msi (Англи-АНУ) файлыг ашигладаг. SR нь яриа таних, TELE нь телефон утас гэсэн үг; Энэ нь танигдаж буй хэл нь утас эсвэл ширээний микрофон гэх мэт чанар муутай аудио оролттой ажиллахад зориулагдсан гэсэн үг юм.


    Цагаан будаа. 7. Хүлээн зөвшөөрөгдсөн хэлийг тохируулах

    Эцэст нь та ярианы синтезийн хэл, дуу хоолойг тохируулж болно. Татаж авах хуудас энд байна будаа. найм. Демо програм нь MSSpeech_TTS_en-us_Helen.msi файлыг ашигладаг. TTS (текстээс яриа) нь үндсэндээ ярианы синтезтэй ижил утгатай. Англи, АНУ гэсэн хоёр боломжтой дуу хоолойг анхаарна уу. Бусад англи дуу хоолой байдаг ч U.S биш. Синтез хэлний файл үүсгэх нь маш хэцүү ажил юм. Гэсэн хэдий ч та олон компаниас өөр дуу хоолойг худалдан авч, суулгаж болно.


    Цагаан будаа. 8. Дуу болон синтезийн хэлийг тохируулах

    Сонирхолтой нь яриа таних хэл болон дуу хоолой/ярианы синтезийн хэл нь үнэндээ тэс өөр зүйл боловч хоёр багц нь нэг татаж авах хуудсан дээрх сонголтууд юм. Татаж авах төвийн UI нь таних хэл болон синтезийн хэлийг хоёуланг нь тэмдэглэх боломжийг олгодог боловч тэдгээрийг нэгэн зэрэг суулгахыг оролдох нь миний хувьд сүйрсэн тул тусад нь суулгахыг зөвлөж байна.

    Microsoft.Speech-ийг System.Speech-тэй харьцуулж байна

    Хэрэв та Windows-ийн програмуудад зориулсан яриа таних, нэгтгэх талаар шинэ хүн бол хэд хэдэн ярианы платформ байдаг тул баримт бичигт амархан андуурч болно. Тодруулбал, энэ нийтлэлийн үзүүлэнгийн ашигласан Microsoft.Speech.dll номын сангаас гадна Windows үйлдлийн системийн нэг хэсэг болох System.Speech.dll номын сан бий. Энэ хоёр номын сан нь API-ууд нь бараг адилхан боловч бүрэн ижил биш байдгаараа төстэй юм. Хэрэв та интернетээс яриа боловсруулах жишээг хайж, бүрэн программ биш кодын хэсгүүдийг харвал энэ жишээ нь System.Speech эсвэл Microsoft.Speech-д хамаарах эсэх нь тодорхойгүй байна.

    Хэрэв та яриа боловсруулахад шинээр орсон бол .NET программдаа ярианы дэмжлэг нэмэхийн тулд System.Speech биш Microsoft.Speech номын санг ашиглана уу.

    Хоёр номын сан нь нийтлэг үндсэн кодын бааз болон ижил төстэй API-г хуваалцдаг ч тэдгээр нь мэдээж ялгаатай. Зарим гол ялгааг энд нэгтгэн харуулав таб. нэг.

    Таб. 1. Microsoft.Speech болон System.Speech хоёрын үндсэн ялгаа

    System.Speech DLL нь OS-ийн нэг хэсэг тул Windows систем бүрт суулгасан байдаг. Microsoft.Speech DLL (болон түүнтэй холбоотой ажиллах хугацаа, хэл) татан авч систем дээр суулгасан байх ёстой. System.Speech ашиглан таних нь ихэвчлэн хэрэглэгч зарим текстийг уншиж, систем нь энэ хэрэглэгчийн дуудлагын шинж чанарыг ойлгож сурах үед хэрэглэгчдэд тусгайлан суралцах шаардлагатай байдаг. Microsoft.Speech ашиглан таних нь ямар ч хэрэглэгчдэд шууд ажилладаг. System.Speech бараг ямар ч үгийг таньж чаддаг (үүнийг чөлөөт диктант гэж нэрлэдэг). Microsoft.Speech нь зөвхөн программд тодорхойлсон Grammar объектод байгаа үг, хэллэгийг таних болно.

    Windows Forms програмд ​​яриа таних дэмжлэг нэмэх

    Windows Forms эсвэл WPF програмд ​​яриа таних болон синтезийн дэмжлэгийг нэмэх үйл явц нь консол програмынхтай төстэй. Үзүүлсэн демо програмыг үүсгэхийн тулд будаа. 2, Би Visual Studio-г ажиллуулж, шинэ C# Windows Forms Application үүсгээд WinFormSpeech нэрийг нь өөрчилсөн.

    Загварын кодыг засварлагч руу ачаалсны дараа би консол программ дээр хийсэн шиг Microsoft.Speech.dll файлын лавлагааг Solution Explorer цонхонд нэмсэн. Эх кодын дээд талд би шаардлагагүй ашиглах мэдэгдлүүдийг устгаж, зөвхөн Систем, Өгөгдөл, Зурах, Маягтын нэрсийн орон зайн лавлагааг үлдээсэн. Дараа нь би Microsoft.Speech.Recognition болон System.Globalization нэрийн орон зайд ашиглах хоёр мэдэгдлийг нэмсэн.

    Windows Forms-д суурилсан демо нь ярианы синтезийг ашигладаггүй тул би Microsoft.Speech.Synthesis номын сан руу холбодоггүй. Windows Forms програмд ​​ярианы синтез нэмэх нь консол програмд ​​ярианы синтез нэмэхтэй адил юм.

    Visual Studio програмын дизайны горимд би TextBox, CheckBox, ListBox хяналтуудыг маягт руу чирсэн. Би CheckBox дээр давхар товшиж, Visual Studio автоматаар араг яс CheckChanged үйл явдал зохицуулагчийн аргыг үүсгэсэн.

    Демо консолын программ шууд л ярианы командуудыг сонсож эхэлсэн бөгөөд дуусах хүртлээ үргэлжлүүлэн хийж байсныг санаарай. Энэ аргыг Windows Forms програмд ​​бас ашиглаж болох ч оронд нь би CheckBox удирдлага (жишээ нь, шалгах хайрцаг) ашиглан яриа таних функцийг асаах, унтраах боломжийг хэрэглэгчдэд олгохоор шийдсэн.

    Хэсэгчилсэн анги тодорхойлогдсон үзүүлэнгийн Form1.cs файл дахь эх кодыг энд харуулав будаа. есөн. Яриа таних хөдөлгүүрийн объектыг маягтын гишүүнээр зарлаж, үүсгэсэн. Маягтын үүсгэгч дээр би SpeechRecognized үйл явдлын зохицуулагчийг холбож, дараа нь хоёр Grammars объект үүсгэж ачаална.

    public Form1() ( InitializeComponent(); sre.SetInputToDefaultAudioDevice(); sre.SpeechRecognized += sre_SpeechRecognized; Grammar g_HelloGoodbye = GetHelloGoodbyeGrammar(); Grammar g_SetTextBox = GetTextBox1TextGrammar(); sre.LoadGrammarAsync(g_HelloTextSetGoodbye); sre.LoadGrammarBox(); / / sre.RecognizeAsync() нь CheckBox үйл явдлын зохицуулагч дотор // байна)

    Цагаан будаа. 9. Windows Forms-д яриа таних дэмжлэгийг нэмэх

    системийг ашиглах; System.Data ашиглах; System.Drawing ашиглах; System.Windows.Forms ашиглах; Microsoft.Speech.Recognition ашиглах; System.Globalization ашиглах; нэрийн талбар WinFormSpeech ( нийтийн хэсэгчилсэн анги Form1: Маягт ( статик CultureInfo ci = new CultureInfo("en-us"); статик SpeechRecognitionEngine sre = шинэ SpeechRecognitionEngine(ci); нийтийн Form1() ( InitializeComponent(); sre.DevicesAultsAre); .SpeechRecognized += sre_SpeechRecognized; Grammar g_HelloGoodbye = GetHelloGoodbyeGrammar(); Grammar g_SetTextBox = GetTextBox1TextGrammar(); sre.LoadGrammarAsync(g_HelloGoodBox1TextGrammar(); sre.LoadGrammarAsync(g_HelloGoodbye)Box //TextsBox-д(g_HelloGoodbye)Recognized///Texts-recognized-г шалгах); зохицуулагч Grammar GetHelloGoodbyeGrammar() ( Сонголтууд ch_HelloGoodbye = шинэ Сонголт(); ch_HelloGoodbye.Add("сайн уу"); ch_HelloGoodbye.Add("баяртай"); GrammarBuilder gb_result = new GrammarBuilder(ch_odbresult = шинэ GrammarBuilder(ch_odbres); буцах g_result; ) static Grammar GetTextBox1TextGrammar() ( Сонголтууд ch_Colors = new Choices(); ch_Colors.Add(шинэ мөр ( "улаан", "цагаан", "цэнхэр" )); GrammarBuilder gb_r esult = new GrammarBuilder(); gb_result.Append("текст хайрцаг 1 тохируулах"); gb_result.Append(ch_Colors); Дүрмийн g_үр дүн = шинэ дүрэм(gb_үр дүн); g_үр дүнг буцаана; ) private void checkBox1_CheckedChanged(объект илгээгч, EventArgs e) ( if (checkBox1.Checked == true) sre.RecognizeAsync(RecognizeMode.Multiple); else if (checkBox1.Checked == false) // Disabled ssegnizelre.)C); void sre_SpeechRecognized(объект илгээгч, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; хэрэв (conf)< 0.65) return; this.Invoke(new MethodInvoker(() =>( listBox1.Items.Add("Би чамайг хэлэхийг сонссон: " + txt); ))); // WinForm-ын онцлог хэрэв (txt.IndexOf("текст") >= 0 && txt.IndexOf("box") >= 0 && txt.IndexOf("1")>= 0) ( string үгс = txt.Split( " "); this.Invoke(new MethodInvoker(() => ( textBox1.Text = үгс; ))); // WinForm-д зориулагдсан ) ) ) // Маягт ) // ns

    Би консол программ шиг хоёр Grammar объектыг шууд үүсгэж болох байсан ч оронд нь кодыг бага зэрэг ойлгомжтой болгохын тулд уг ажлыг гүйцэтгэдэг туслах хоёр аргыг (GetHelloGoodbyeGrammar болон GetTextBox1TextGrammar) тодорхойлсон.

    статик дүрмийн GetTextBox1TextGrammar() ( Сонголтууд ch_Colors = шинэ Сонголт(); ch_Colors.Add(шинэ мөр ( "улаан", "цагаан", "цэнхэр" )); GrammarBuilder gb_result = шинэ GrammarBuilder(); gb_result.Append("текст тохируулах) хайрцаг 1"); gb_result.Append(ch_Colors); Дүрмийн g_үр дүн = шинэ дүрмийн (gb_үр дүн); g_үр дүнг буцаана; )

    Энэхүү туслах арга нь "текстийн хайрцаг 1 улаан" гэсэн хэллэгийг таних болно. Гэсэн хэдий ч хэрэглэгч энэ хэллэгийг үнэн зөв дуудах шаардлагагүй. Жишээлбэл, тэр: "Текстийн 1-р хайрцгийн текстийг улаан болгож тохируулна уу" гэж хэлж болох бөгөөд ярианы систем нь "текстийн хайрцаг 1-ийг улаан болгож тохируулна уу" гэсэн хэллэгийг таньсан хэвээр байх болно - энэ нь яг таарч байгаатай харьцуулахад бага итгэл үнэмшилтэй байсан ч гэсэн. Дүрмийн загвар. Өөрөөр хэлбэл, дүрмийн объект үүсгэхдээ хэллэгийн бүх хувилбарыг анхаарч үзэх шаардлагагүй. Энэ нь яриа таних аргыг эрс хялбаршуулдаг.

    CheckBox-ийн үйл явдлын зохицуулагчийг дараах байдлаар тодорхойлно.

    private void checkBox1_CheckedChanged(объект илгээгч, EventArgs e) ( if (checkBox1.Checked == true) sre.RecognizeAsync(RecognizeMode.Multiple); else if (checkBox1.Checked == false) // disabled sre.nclance);

    Яриа таних хөдөлгүүрийн объект болох sre (яриа таних хөдөлгүүр) нь Windows Forms програмын ашиглалтын туршид үргэлж байдаг. Энэ объект нь RecognizeAsync болон RecognizeAsyncCancel аргууд руу залгахад хэрэглэгч CheckBox-г зохих ёсоор шилжүүлснээр идэвхжиж, идэвхгүй болно.

    SpeechRecognized үйл явдлын зохицуулагчийн тодорхойлолт дараахаас эхэлдэг:

    void sre_SpeechRecognized(объект илгээгч, SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; хэрэв (conf)< 0.65) return; ...

    Үр дүн нь ихэвчлэн ашиглагддаг Result.Text болон Result.Confidence шинж чанаруудаас гадна өөр хэд хэдэн ашигтай, гэхдээ илүү төвөгтэй шинж чанартай байдаг. жишээ нь Homophones болон ReplacementWordUnits. Нэмж дурдахад яриа таних систем нь SpeechHypothesized гэх мэт ашигтай үйл явдлуудыг өгдөг.

    this.Invoke((Action)(() => listBox1.Items.Add("Би чамайг хэлэхийг сонссон: " + txt)));

    Онолын хувьд MethodInvoker төлөөлөгчийг ашиглах нь энэ нөхцөлд Action төлөөлөгчийг ашиглахаас арай илүү үр дүнтэй байдаг, учир нь MethodInvoker нь Windows.Forms нэрийн талбарын нэг хэсэг бөгөөд тиймээс Windows Forms програмуудад зориулагдсан байдаг. Үйл ажиллагааны төлөөлөгч нь илүү уян хатан байдаг. Энэ жишээ нь та яриа таних системээр дамжуулан Windows Forms програмыг бүрэн удирдах боломжтойг харуулж байна - энэ бол гайхалтай хүчирхэг бөгөөд хэрэгтэй функц юм.

    Дүгнэлт

    Хэрэв та .NET програмууд дахь ярианы синтез болон танигдлыг судлахыг хүсвэл энэ нийтлэлд өгөгдсөн мэдээлэл таныг шууд эхлүүлэх болно. Анхны сургалт, эд ангиудыг суурилуулах бэрхшээлийг даван туулж чадвал технологийг эзэмших нь тийм ч хэцүү биш юм. Ярианы нийлэгжилт, танин мэдэхүйн жинхэнэ сорилт бол энэ нь үнэхээр хэрэгтэй гэдгийг ойлгох явдал юм.

    Консолын программуудын хувьд та хэрэглэгч асуулт асууж, программ хариулдаг сонирхолтой харилцан яриа үүсгэж болох бөгөөд үүний үр дүнд Кортана шиг орчин бий болно. Таны компьютерийн чанга яригчаас яриа гарч ирэхэд микрофон түүнийг хүлээн авч дахин танигдах тул та жаахан болгоомжтой байх хэрэгтэй. Би өөрөө асуулт асууж, программ үүнийг таньж, хариулсан ч ярианы хариулт нь дараагийн таних үйлдлийг эхлүүлж, би инээдтэй төгсгөлгүй ярианы гогцоотой болсон.

    Консолын программ дахь ярианы өөр нэг боломж бол "Тэмдэглэлийн дэвтэр эхлүүлэх", "Үг эхлүүлэх" гэх мэт командуудыг таних явдал юм. Өөрөөр хэлбэл, ийм консол программыг компьютер дээрээ гар, хулгана зэрэг олон үйлдэл хийх шаардлагатай үйлдэл хийхэд ашиглаж болно.

    Жеймс Маккаффри(Доктор Жеймс МакКаффри) Вашингтоны Редмонд дахь Microsoft Research-д ажилладаг. Internet Explorer, Bing зэрэг Microsoft-ын хэд хэдэн бүтээгдэхүүнийг бүтээхэд оролцсон. Түүнтэй холбогдож болно [имэйлээр хамгаалагдсан].

    Энэ нийтлэлийг хянаж үзсэн Microsoft судалгааны мэргэжилтнүүд Роб Груэн, Марк Маррон, Кертис фон Ве нарт баярлалаа.

    Энэ утас байна яриа танихэсвэл дуут оролт, гэхдээ энэ нь зөвхөн интернетээр Google-ийн үйлчилгээнд холбогдож ажилладаг. Гэхдээ утсыг интернетгүйгээр яриа танихыг заах боломжтой тул бид орос хэлийг хэрхэн таних талаар авч үзэх болно. офлайн. Энэ аргыг ажиллуулахын тулд та хоёр програм суулгасан байх ёстой. Дуут хайлтболон Google-ийн хайлт, хэдийгээр эдгээр программууд нь үйлдвэрийн програм хангамжид аль хэдийн байдаг.

    Програм хангамжийн хувьд

    Утасны тохиргоо руу очоод сонгоно уу

    Бид орос хэлийг сонгоод татаж аваарай.

    Програм хангамжийн 2.8B-ийн хувьд

    Шинэ програм хангамжийн цэсийн зүйл " Офлайн яриа таних" байхгүй байна.

    Хэрэв та програмыг шинэчлэхээс өмнө офлайн багцуудыг суулгасан байсан бөгөөд шинэчлэлтийн явцад арчихгүй (тохиргоог дахин тохируулаагүй) бол тэдгээрийг хадгалах ёстой. Үгүй бол та програм хангамж руу буцах хэрэгтэй болно 2.2 , дуут багцуудыг суулгаж, дараа нь системийг шинэчилнэ үү 2.8Б.

    Rev.B төхөөрөмжүүдийн хувьд

    Бид шинэчлэлтийг сэргээх замаар суулгаж, oyline-д дуу хоолой таних боломжтой.

    2. Орос хэлний ярианы суурийг татаж аваад SD карт руу хуулна уу

    Russian_offline.zip 1301 татаж авах

    3. Утсаа унтарсан үед (Эзлэхүүн + ба Асаах) дарж сэргээхийг оруулна уу.

    4. Сонго Гадны санах ойгоос шинэчлэлийг хийхтатаж авсан архиваа сонго.

    Ямар ч програм бичигдсэн яриаг хуулбарлах гарын авлагын ажлыг бүрэн орлож чадахгүй. Гэсэн хэдий ч яриаг текст рүү хөрвүүлэх ажлыг ихээхэн хурдасгаж, хөнгөвчлөх, өөрөөр хэлбэл транскрипцийг хялбаршуулах шийдлүүд байдаг.

    Транскрипци гэдэг нь аудио эсвэл видео файлыг текст хэлбэрээр бичих явдал юм. Интернет дээр текстийг хуулбарлахад тодорхой хэмжээний мөнгө төлдөг төлбөртэй ажлууд байдаг.

    Яриа текст рүү орчуулах нь ашигтай

    • оюутнууд бичигдсэн аудио эсвэл видео лекцийг текст болгон орчуулах,
    • вэб сайт, блог хөтлөгч блогчид,
    • зохиолч, сэтгүүлчид ном зохиол бичих,
    • вэбинар, яриа гэх мэтийн дараа текст хэрэгтэй мэдээллийн бизнес эрхлэгчид,
    • бичихэд хэцүү хүмүүс - тэд захидал бичиж, хамаатан садан, найз нөхөддөө илгээж болно.
    • бусад сонголтууд.

    Бид компьютер, гар утасны програмууд болон онлайн үйлчилгээнүүдэд байдаг хамгийн үр дүнтэй хэрэгслүүдийг тайлбарлах болно.

    1 speakpad.ru сайт

    Энэ нь Google Chrome хөтчөөр дамжуулан яриаг текст болгон хөрвүүлэх боломжийг олгодог онлайн үйлчилгээ юм. Үйлчилгээ нь микрофон болон бэлэн файлуудтай ажилладаг. Мэдээжийн хэрэг, хэрэв та гадны микрофон ашиглаж, өөрөө зааж өгвөл чанар нь хамаагүй өндөр байх болно. Гэсэн хэдий ч энэ үйлчилгээ нь YouTube-ийн видео бичлэгийг сайн хийдэг.

    "Бичлэгийг идэвхжүүлэх" дээр дарж, "Микрофон ашиглах" гэсэн асуултанд хариулна уу - үүний тулд "Зөвшөөрөх" дээр дарна уу.

    Үйлчилгээг хэрхэн ашиглах тухай урт зааврыг 1-р зурагт 1-р товчлуур дээр дарж буулгаж болно. 3. Та энгийн бүртгэлээр дамжиж сурталчилгаанаас ангижрах боломжтой.

    Цагаан будаа. 3. Үйлчилгээний ярианы самбар

    Дууссан үр дүнг засварлахад хялбар байдаг. Үүнийг хийхийн тулд та тодруулсан үгийг гараар засах эсвэл дахин бичих хэрэгтэй. Ажлын үр дүнг таны хувийн дансанд хадгалсан бөгөөд тэдгээрийг компьютер дээрээ татаж авах боломжтой.

    Липпедтэй ажиллах видео хичээлүүдийн жагсаалт:

    Та Youtube-ээс эсвэл компьютерээсээ видео бичлэг хийж болно, гэхдээ танд холигч хэрэгтэй болно, илүү дэлгэрэнгүй:

    Видео "аудио транскрипт"

    Үйлчилгээ нь долоон хэлээр ажилладаг. Жижиг хасах зүйл бий. Энэ нь хэрэв та дууссан аудио файлыг хуулбарлах шаардлагатай бол түүний дууг чанга яригчдад түгээдэг бөгөөд энэ нь цуурай хэлбэрээр нэмэлт хөндлөнгийн оролцоо үүсгэдэг.

    2 Үйлчилгээ dictation.io

    Үг хэллэгийг текст болгон үнэгүй, хялбар орчуулах боломжийг олгох гайхалтай онлайн үйлчилгээ.

    Цагаан будаа. 4. Үйлчилгээний dictation.io

    Зураг дээрх 1. 4 - Хуудасны төгсгөлд орос хэлийг сонгож болно. Google Chrome хөтөч дээр хэлийг сонгосон боловч Mozilla-д ямар нэг шалтгаанаар ийм боломж байдаггүй.

    Дууссан үр дүнг автоматаар хадгалах чадвар хэрэгжиж байгаа нь анхаарал татаж байна. Энэ нь таб эсвэл хөтчийг хаасны үр дүнд санамсаргүй устгахаас сэргийлнэ. Энэ үйлчилгээ нь дууссан файлуудыг танихгүй. Микрофонтой ажилладаг. Та үг хэлэх үедээ цэг таслалыг нэрлэх хэрэгтэй.

    Текстийг маш зөв хүлээн зөвшөөрсөн, зөв ​​бичгийн алдаа байхгүй. Та гараас өөрөө цэг таслал оруулах боломжтой. Дууссан үр дүнг таны компьютер дээр хадгалах боломжтой.

    3 Бодит чанга яригч

    Энэ програм нь хүний ​​яриаг текст болгон хялбархан хөрвүүлэх боломжийг олгодог. Энэ нь Windows, Android, Linux, Mac зэрэг янз бүрийн системүүд дээр ажиллахад зориулагдсан. Үүний тусламжтайгаар та дууг микрофон болгон хувиргаж (жишээлбэл, зөөврийн компьютерт суулгаж болно), мөн аудио файлд бичиж болно.

    Дэлхийн 13 хэлийг ойлгох чадвартай. Онлайн үйлчилгээ хэлбэрээр ажилладаг програмын бета хувилбар байдаг:

    Та дээрх холбоосыг дагаж, орос хэлээ сонгоод аудио эсвэл видео файлаа онлайн үйлчилгээнд байршуулж, транскрипцийн төлбөрийг төлөх шаардлагатай. Транскрипц хийсний дараа та хүлээн авсан текстийг хуулж болно. Транскрипц хийх файл том байх тусам түүнийг боловсруулахад илүү их цаг хугацаа шаардагдах бөгөөд илүү дэлгэрэнгүй мэдээлэл:

    2017 онд RealSpeaker ашиглан үнэгүй транскрипц хийх боломжтой байсан бол 2018 онд ийм боломж байхгүй. Транскрипц хийсэн файлыг бүх хэрэглэгчдэд татаж авах боломжтой байгаа нь маш ичмээр юм, магадгүй үүнийг эцэслэх болно.

    Хөтөлбөрийн хөгжүүлэгчийн холбоо барих хаягийг (VKontakte, Facebook, Youtube, Twitter, и-мэйл, утас) түүний вэбсайтын хуудаснаас (илүү нарийвчлалтай, сайтын доод хэсэгт) олж болно.

    4 Яриа хөтлөгч

    Андройд дээр ажилладаг гар утасны төхөөрөмжүүдийн өмнөх програмын өөр хувилбар. Апп дэлгүүрт үнэгүй авах боломжтой:

    Текстийг автоматаар засаж, цэг таслалыг байрлуулна. Тэмдэглэл бичих эсвэл жагсаалт гаргахад тохиромжтой. Үүний үр дүнд текст нь маш сайн чанартай болж хувирна.

    5 Луу диктант

    Энэ нь Apple-аас гар утасны төхөөрөмжүүдэд үнэ төлбөргүй тараагддаг програм юм.

    Хөтөлбөр нь 15 хэлтэй ажиллах боломжтой. Энэ нь үр дүнг засах, жагсаалтаас хүссэн үгсийг сонгох боломжийг олгоно. Бүх дууг тодорхой хэлэх, шаардлагагүй завсарлага хийхгүй байх, аялгуунаас зайлсхийх шаардлагатай. Заримдаа үгийн төгсгөлд алдаа гардаг.

    Dragon Dictation програмыг эзэд нь жишээ нь, орон сууцанд нүүж байхдаа дэлгүүрт байгаа худалдааны жагсаалтыг бичихэд ашигладаг. Би тэнд очно, тэмдэглэл дэх текстийг үзэх боломжтой, сонсох шаардлагагүй.

    Та практикт ашигладаг ямар ч програмын үр дүнг дахин шалгаж, тодорхой тохируулга хийхэд бэлэн байгаарай. Энэ бол алдаагүй, өөгүй текстийг авах цорын ганц арга зам юм.

    Мөн ашигтай үйлчилгээ:

    Компьютерийн мэдлэгийн талаарх сүүлийн үеийн нийтлэлүүдийг шууд өөрийн имэйл хайрцагт аваарай.
    Аль хэдийн илүү 3000 захиалагч

    .

    Шинэчлэгдсэн: 2017 оны 7-р сарын 31-ний Даваа гараг

    Компьютертэй ярих хагас гайхалтай санаа нь мэргэжлийн гэрэл зурагтай ямар холбоотой вэ? Хэрэв та хүний ​​​​техникийн орчныг эцэс төгсгөлгүй хөгжүүлэх санааны шүтэн бишрэгч биш бол бараг байхгүй. Та камертаа фокусын уртыг өөрчлөх, өртөлтийн нөхөн төлбөрийг хагас алхам нэмэхийн тулд дуут тушаал өгч байна гэж төсөөлөөд үз дээ. Камерын алсын удирдлага аль хэдийн хэрэгжсэн, гэхдээ тэнд та товчлууруудыг чимээгүй дарах хэрэгтэй бөгөөд энд сонсголын фотик байна!

    Хүний компьютертэй дуу хоолойгоор харьцдаг гайхалтай киног жишээ болгон дурддаг уламжлалтай, ядаж л Стэнли Кубрикийн найруулсан "Space Odyssey 2001". Тэнд самбар дээрх компьютер нь сансрын нисэгчидтэй утга учиртай яриа хэлэлцээ хийхээс гадна дүлий хүн шиг уруул уншиж чаддаг. Өөрөөр хэлбэл, уг машин хүний ​​яриаг алдаагүй таньж сурсан. Магадгүй хэн нэгэн камерын алсын дуу хоолойгоор удирдуулах нь илүүц байх болно, гэхдээ олон хүн энэ хэллэгийг хүсч байна "Биднийг салгаарай хүүхэд"мөн далдуу модны дэвсгэр дээрх бүхэл бүтэн гэр бүлийн зураг бэлэн боллоо.

    За, би энд уламжлалдаа хүндэтгэл үзүүллээ, бага зэрэг төсөөлж байна. Гэхдээ чин сэтгэлээсээ хэлэхэд энэ нийтлэлийг бичихэд хэцүү байсан бөгөөд энэ бүхэн Android 4 үйлдлийн системтэй ухаалаг гар утас хэлбэрээр бэлэглэснээс эхэлсэн юм. Энэхүү HUAWEI U8815 загвар нь дөрвөн инчийн жижиг мэдрэгчтэй дэлгэцтэй, дэлгэцийн гартай. Үүн дээр бичих нь ер бусын боловч тийм ч шаардлагагүй болсон. (зураг01)

    1. Android үйлдлийн систем дээр ухаалаг гар утсанд дуу хоолой таних

    Шинэ тоглоом туршиж байхдаа хайлтын талбарт микрофоны график байгааг анзаарав. Googleболон Notes доторх гар дээр. Өмнө нь би энэ тэмдэг нь юу гэсэн үг болохыг сонирхдоггүй байсан. Би дотроо яриа өрнүүлсэн Skypeгар дээр бичсэн үсгүүд. Энэ бол ихэнх интернет хэрэглэгчдийн хийдэг зүйл юм. Гэхдээ тэд надад хожим тайлбарласнаар хайлтын системд GoogleОрос хэл дээрх дуут хайлт нэмэгдэж, хөтөч ашиглахдаа богино мессеж бичих боломжийг олгодог програмууд гарч ирэв Chrome.

    Би гурван үгтэй хэллэг хэлсэн, программ тэднийг тодорхойлж, цэнхэр дэвсгэртэй нүдэнд харуулав. Бүх үгийг зөв бичсэн болохоор гайхах зүйл байсан. Хэрэв та энэ нүдэн дээр дарвал андройд дэвтэрийн текст талбарт хэллэг гарч ирнэ. Тэгээд тэр хоёр үг хэлчихээд туслах руу нь мессэж илгээв.


    2. Дуу таних программуудын товч түүх.

    Дуут удирдлагын орчин үеийн ололт амжилт нь гэр ахуйн цахилгаан хэрэгсэл, машин, робот зэрэгт тушаал өгөх боломжийг олгодог нь миний хувьд нээлт биш байсан. Тушаалын горимыг Windows, OS/2 болон Mac OS-ийн өмнөх хувилбаруудад нэвтрүүлсэн. Би ярилцагч нэвтрүүлгүүдийг үзсэн, гэхдээ ямар хэрэгтэй юм бэ? Магадгүй миний онцлог нь гар дээр бичихээс илүү ярихад хялбар байдаг, гар утсан дээр би юу ч бичиж чаддаггүй. Та ердийн гартай зөөврийн компьютер дээр харилцагчдыг бичиж, USB кабелиар дамжуулах хэрэгтэй. Гэхдээ зүгээр л микрофон руу ярьж, компьютер өөрөө текстийг алдаагүй бичсэн нь миний хувьд мөрөөдөл байсан. Найдваргүй байдлын уур амьсгалыг форум дээрх хэлэлцүүлгээр дэмжсэн. Тэдэнд хаа сайгүй ийм гунигтай бодол төрсөн:

    "Гэсэн хэдий ч практик дээр өнөөг хүртэл яриаг бодитоор таних хөтөлбөрүүд (тэр ч байтугай орос хэл дээр) бараг байдаггүй бөгөөд удахгүй бүтээгдэхгүй нь ойлгомжтой. Түүгээр ч барахгүй таних урвуу даалгавар - ярианы синтез нь танихаас хамаагүй хялбар юм шиг санагдаж байгаа нь бүрэн шийдэгдээгүй байна. (ComputerPress №12, 2004)

    "Компьютерийн хувьд ажил нь нэлээд хэцүү тул яриа таних ердийн програмууд (зөвхөн орос хэлээр биш) өнөөг хүртэл байдаггүй. Хамгийн аймшигтай нь хүн үг таних механизм нь хэрэгжээгүй тул таних программ зохиоход түшиглэх зүйл байхгүй. (Форум дээрх өөр нэг хэлэлцүүлэг).

    Үүний зэрэгцээ англи хэл дээрх текст оруулах програмуудын тойм нь тодорхой амжилтанд хүрсэн болохыг харуулж байна. Жишээлбэл, IBM ViaVoice 98 Executive Edition 64,000 үгийн үндсэн толь бичигтэй байсан бөгөөд ижил тооны үг нэмэх чадвартай байв. Хөтөлбөрийг сургахгүйгээр үг таних хувь 80 орчим хувь байсан бөгөөд дараа нь тодорхой хэрэглэгчтэй ажилласнаар 95% хүрчээ.

    Орос хэлийг таних хөтөлбөрүүдийн дотроос англи хэл дээрх Dragon Dictate 2.5-ийн нэмэлт болох "Горыныч" -ыг тэмдэглэх нь зүйтэй. Хайлтын тухай, дараа нь "таван Горынычтай хийсэн тулаан" -ын талаар би тоймны хоёрдугаар хэсэгт хэлэх болно. Би "Англи луу"-г анх олсон.

    3. "Байгалийн жамаар ярьдаг луу" үргэлжилсэн яриаг таних хөтөлбөр

    Компанийн програмын орчин үеийн хувилбар НуансМинскийн гадаад хэлний дээд сургуулийн хуучин найзтайгаа хамт байсан. Түүнийг гадаадаас авчирсан бөгөөд "компьютерийн нарийн бичгийн дарга" болно гэж бодоод худалдаж авсан. Гэвч ямар нэг зүйл ажиллахгүй байсан тул програм нь зөөврийн компьютер дээр бараг мартагдсан хэвээр байв. Ойлгомжтой туршлагагүйн улмаас би өөрөө найздаа очихоос өөр аргагүй болсон. Энэ бүх урт танилцуулга нь миний хийсэн дүгнэлтийг зөв ойлгоход зайлшгүй шаардлагатай.

    Миний анхны луугийн бүтэн нэр нь: . Хөтөлбөр нь англи хэл дээр байгаа бөгөөд гарын авлагагүй ч гэсэн бүх зүйл тодорхой байна. Эхний алхам бол түүний гүйцэтгэл дэх үгсийн дууны онцлогийг тодорхойлохын тулд тодорхой хэрэглэгчийн профайлыг бий болгох явдал юм. Миний хийсэн зүйл бол илтгэгчийн нас, улс орон, дуудлагын онцлог чухал юм. Миний сонголт бол: 22-54 нас, Англи Англи, стандарт дуудлага. Дараа нь микрофоноо тохируулах хэдэн цонх гарч ирнэ. (зураг04)

    Яриа таних ноцтой хөтөлбөрийн дараагийн шат бол тухайн хүний ​​тодорхой дуудлагад сургах явдал юм. Та текстийн мөн чанарыг сонгохыг урьж байна: миний сонголт бол диктант бичих товч заавар, гэхдээ та инээдмийн түүхийг "захиалах" боломжтой.

    Хөтөлбөртэй ажиллах энэ үе шатны мөн чанар нь маш энгийн - текстийг цонхонд харуулах бөгөөд дээр нь шар сум байна. Зөв дуудлагатай бол сум нь хэллэгүүдийн дундуур шилжиж, доод хэсэгт сургалтын явцын мөр байна. Англи хэлний яриаг би нэлээд мартчихсан байсан тул би хэцүүхэн хөдөлсөн. Цаг хугацаа бас хязгаарлагдмал байсан - эцэст нь компьютер минийх биш байсан тул би сургалтаа тасалдуулах шаардлагатай болсон. Харин нэг найз нь хагас цаг хүрэхгүй хугацаанд шалгалт өгсөн гэж хэлсэн. (зураг05)

    Програмыг дуудлагадаа тохируулахаас татгалзаж, би үндсэн цонх руу очиж, суулгасан текст засварлагчийг ажиллуулав. Тэрээр компьютер дээрээс олсон зарим бичвэрээс тусдаа үг хэлсэн. Тэр зөв хэлсэн үг, хөтөлбөр нь хэвлэгдсэн, муу хэлсэн үг нь англиар солигдсон. "Мөрийг арилгах" командыг англиар тодорхой дуудсаны дараа програм үүнийг биелүүлэв. Энэ нь би командуудыг зөв уншиж, програм нь урьдчилан сургалтгүйгээр тэдгээрийг таньдаг гэсэн үг юм.

    Гэхдээ энэ "луу" оросоор яаж бичдэг нь надад чухал байсан. Өмнөх тайлбараас харахад хөтөлбөрийг сургахдаа та зөвхөн англи хэл дээрх текстийг сонгох боломжтой бөгөөд тэнд орос хэл дээрх текст байдаггүй. Орос хэлний яриаг таних чадварыг сургахад ямар ч үр дүн гарахгүй нь ойлгомжтой. Дараагийн зураг дээр та "Сайн уу" гэсэн орос үгийг дуудахдаа програм ямар хэллэг бичсэнийг харж болно. (зураг06)

    Анхны луутай харьцсаны үр дүн бага зэрэг инээдтэй болж хувирав. Хэрэв та албан ёсны вэбсайт дээрх текстийг анхааралтай уншвал энэ програм хангамжийн бүтээгдэхүүний англи хэлний "мэргэшсэн байдал" -ыг харж болно. Үүнээс гадна, ачаалах үед бид "Англи хэл" програмын цонхонд уншдаг. Тэгэхээр энэ бүхэн яагаад хэрэгтэй байсан бэ? Форум, цуу яриа буруутай нь тодорхой байна ...

    Гэхдээ бас хэрэгтэй туршлага бий. Найз маань зөөврийн компьютерийнхээ байдлыг харахыг хүссэн. Ямар нэгэн байдлаар тэр аажмаар ажиллаж эхлэв. Энэ нь гайхмаар зүйл биш юм - системийн хуваалт ердөө 5% сул зайтай байсан. Шаардлагагүй програмуудыг устгах явцад албан ёсны хувилбар нь 2.3 ГБ-аас их зай эзэлнэ. Энэ дугаар бидэнд дараа хэрэгтэй болно. (зураг.07)



    Орос хэл яриаг хүлээн зөвшөөрөх нь тийм ч энгийн ажил биш байв. Минск хотод би нэг найзаасаа "Гориныч"-ыг олж чадсан. Тэрээр хуучин нурангинаасаа дискийг удаан хугацаанд хайж байсан бөгөөд түүний хэлснээр энэ бол албан ёсны хэвлэл юм. Хөтөлбөрийг шууд суулгасан бөгөөд түүний толь бичигт 5000 орос үг, 100 тушаал, 600 англи үг, 31 тушаал багтсан болохыг олж мэдэв.

    Эхлээд та микрофоныг тохируулах хэрэгтэй, үүнийг миний хийсэн. Тэгээд толь бичгээ нээж үг нэмсэн "шалгалт"Учир нь энэ нь хөтөлбөрийн толь бичигт байгаагүй юм. Би нэгэн хэвийн, тодорхой ярихыг хичээсэн. Эцэст нь би Gorynych Pro 3.0 програмыг нээж, диктант горимыг асааж, "дууны хувьд ижил төстэй үгсийн" жагсаалтыг олж авлаа. (зураг.09)

    Үр дүн нь намайг гайхшруулсан, учир нь энэ нь андройд ухаалаг гар утасны ажлаас илт ялгаатай байсан тул би бусад програмуудыг туршиж үзэхээр шийдсэн " Google Chrome вэб дэлгүүр". Тэгээд тэр "горынич могой"-той харьцахаа дараа нь хойшлуулав. Би ингэж бодсон хойшлуулаханхны оросын сүнсээр хийсэн үйлдэл

    5. Google-ийн дуу хоолойны чадвар

    Windows үйлдлийн системтэй ердийн компьютер дээр дуу хоолойгоор ажиллахын тулд та хөтөч суулгах хэрэгтэй Гүүгл Кром. Хэрэв та Интернет дээр ажиллаж байгаа бол баруун доод буланд байгаа програм хангамжийн дэлгүүрийн холбоос дээр дарж болно. Тэндээс би дуут текст оруулах хоёр програм, хоёр өргөтгөл олсон. Програмуудыг дуудаж байна "Дууны дэвтэр"болон "Voysnot - дуу хоолой руу текст". Суулгасны дараа тэдгээрийг таб дээрээс олж болно "Програм"таны хөтөч "Хром". (зураг.10)

    Өргөтгөлүүдийг дууддаг "Google Voice Search Hotword (Бета) 0.1.0.5"болон "Дуу оруулах текст - Speechpad.ru 5.4". Суулгасны дараа тэдгээрийг унтрааж эсвэл таб дээрээс устгаж болно "Өргөтгөлүүд".(зураг.11)

    VoiceNote. Chrome хөтөч дээрх програмын таб дээр програмын дүрс дээр давхар товшино уу. Доорх зурагт үзүүлсэн шиг харилцах цонх нээгдэнэ. Микрофоны дүрс дээр дарснаар та микрофон руу богино хэллэгүүдийг хэлдэг. Програм нь таны үгсийг яриа таних сервер рүү илгээж, текстийг цонхонд бичдэг. Зурагт үзүүлсэн бүх үг, хэллэгийг эхний оролдлогоор шивсэн. Мэдээжийн хэрэг, энэ арга нь зөвхөн идэвхтэй интернет холболттой үед л ажилладаг. (зураг.12)

    Дуут тэмдэглэлийн дэвтэр. Хэрэв та програмыг програмын таб дээр ажиллуулбал Интернет хуудасны шинэ таб нээгдэнэ Speechpad.ru. Энэ үйлчилгээг хэрхэн ашиглах талаар дэлгэрэнгүй заавар, авсаархан маягт байдаг. Сүүлийнхийг доорх зурагт үзүүлэв. (зураг.13)

    Дуут оролттекст нь интернет хуудсуудын текстийн талбаруудыг дуу хоолойгоороо бөглөх боломжийг олгодог. Жишээлбэл, би хуудас руугаа орсон Google+. Шинэ мессеж оруулах талбарт хулганы баруун товчийг дараад сонгоно уу "Ярианы самбар". Ягаан өнгийн оролтын хайрцаг нь та текстээ бичиж болно гэж хэлдэг. (зураг.14)

    Google дуут хайлтдуу хоолойгоор хайх боломжийг танд олгоно. Энэ өргөтгөлийг суулгаж идэвхжүүлэхэд хайлтын талбарт микрофоны тэмдэг гарч ирнэ. Үүнийг дарахад том улаан тойрог дотор тэмдэг гарч ирнэ. Хайлтын хэллэгийг хэлэхэд л хайлтын үр дүнд гарч ирнэ. (зураг.15)

    Анхаарах зүйл: микрофон нь Chrome өргөтгөлтэй ажиллахын тулд хөтчийн тохиргоонд микрофон руу нэвтрэхийг зөвшөөрөх шаардлагатай. Энэ нь аюулгүй байдлын үүднээс анхдагчаар идэвхгүй болсон. Нэвтрэх Тохиргоо→Хувийн мэдээлэл→Агуулгын тохиргоо. (Жагсаалтын төгсгөлд байгаа бүх тохиргоонд хандахын тулд товшино уу Нарийвчилсан тохиргоог харуулах). Харилцах цонх нээгдэнэ Хуудасны агуулгын тохиргоо. Жагсаалтын доор байгаа зүйлийг сонгоно уу Мультимедиа→микрофон.

    6. Орос хэл яриа таних программуудтай хийсэн ажлын үр дүн

    Текст оруулах программыг дуу хоолойгоор ашиглах багахан туршлага нь интернетийн компанийн сервер дээр энэ функцийг маш сайн хэрэгжүүлсэн болохыг харуулж байна. Google. Урьдчилсан сургалтгүйгээр үгсийг зөв таньдаг. Энэ нь орос хэлийг таних асуудал шийдэгдсэнийг харуулж байна.

    Одоо бид хөгжлийн үр дүн гэж хэлж болно Googleбусад үйлдвэрлэгчдийн бүтээгдэхүүнийг үнэлэх шинэ шалгуур болно. Таних систем нь компанийн серверүүдтэй холбоо барихгүйгээр оффлайн горимд ажиллахыг хүсч байна - энэ нь илүү тохиромжтой бөгөөд хурдан юм. Орос хэл ярианы тасралтгүй урсгалтай ажиллах бие даасан хөтөлбөр хэзээ гарах нь тодорхойгүй байна. Гэсэн хэдий ч энэхүү "бүтээл"-ийг сургах боломж нь жинхэнэ нээлт болно гэж таамаглах нь зүйтэй юм.

    Оросын хөгжүүлэгчдийн програмууд "Гориныч", "Диктограф"болон "Тэмцэл"Би энэ тоймны хоёр дахь хэсэгт дэлгэрэнгүй ярих болно. Жинхэнэ дискийг хайхад хэцүү болсон тул энэ нийтлэлийг маш удаан бичсэн. Одоогийн байдлаар би Combat 2.52-аас бусад Оросын дуу, текстийг таних программын бүх хувилбарыг аль хэдийн эзэмшсэн. Миний найз нөхөд, хамтран ажиллагсдын хэн нь ч ийм хөтөлбөртэй байдаггүй бөгөөд би өөрөө форум дээр цөөн хэдэн магтаал сайшаалтай байдаг. Үнэн, ийм хачирхалтай сонголт байсан - "Combat" -ыг SMS-ээр татаж аваарай, гэхдээ би үүнд дургүй. (зураг 16)


    Богино хэмжээний видео клип нь Android үйлдлийн системтэй ухаалаг гар утсанд яриа таних механизм хэрхэн ажилладагийг харуулах болно. Дуут залгах онцлог нь Google серверт холбогдох хэрэгцээ юм. Тиймээс интернет таны төлөө ажиллах ёстой



    Үүнтэй төстэй нийтлэлүүд