Turinys:

Balso aktyvuotas asistentas - MAX: 10 žingsnių
Balso aktyvuotas asistentas - MAX: 10 žingsnių

Video: Balso aktyvuotas asistentas - MAX: 10 žingsnių

Video: Balso aktyvuotas asistentas - MAX: 10 žingsnių
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Liepa
Anonim
Balso aktyvuotas asistentas - MAX
Balso aktyvuotas asistentas - MAX

Sveiki, šioje instrukcijoje aš kalbėsiu apie tai, kaip sukurti pokalbių robotą MAX (pavadinau save !!!)

Įdiegę šį pokalbių robotą, galite padaryti jį valdomą balsu arba naudodami įvairią programinę įrangą, kaip balso asistentą. Aš čia nekalbėsiu apie tai, nes kiekvienas iš tikrųjų gali lengvai tai įgyvendinti.

Taigi visi prašau mane palaikyti ….

Mano pirmasis pamokomas !!!!!!!

Nerimas dėl to, kas nutiks ………………….

1 žingsnis: Žinokite apie konkursą

Žinios apie konkursą
Žinios apie konkursą
Žinios apie konkursą
Žinios apie konkursą

Sveiki inžinieriai ir dizaineriai ….

Aš pats, kompiuterių mokslų studentas, mėgstu žaisti žaidimus ir visada įkvėptas kompiuterių. Trumpai kalbėdamas, man patinka žinoti, kaip veikia visi šie dalykai. Taigi, kaip priežastis, aš nuolat ieškojau, ieškojau google (aš taip pat naudojau „Yahoo“!!!) !!!) ieškant ir mokantis dalykų.

Taigi vieną dieną aš atėjau prieš „Instructables“ekraną. Tai mane tikrai pralinksmino per įvairius projektus su įvairiomis idėjomis įvairiais aspektais. Tada nuo tos dienos aš ir toliau seku. Konkurso puslapis mane tikrai linksmino tiek dėl prizų, tiek dėl projektų, kuriuos pateikė įvairūs žmonės aplink pasaulis.

BALSAS AKTYVUOTAS IŠŠŪKIS yra mano pirmoji platforma, skirta rašyti instrukciją.

Prizai mane labai pralinksmino (taip !!! Per daug ……..).

Taip pat noriu kitiems pasidalinti savo žiniomis apie kompiuterius ir jų technologijas apie tai, kaip iš tikrųjų veikia įvairūs dalykai.

Šioje instrukcijoje parodysiu, kaip sukurti savo balsu aktyvuojamą asistentą.

Kadangi tai yra mano pirmasis „Instructable“, gali būti tiek daug klaidų (nors manau, kad visos šios klaidos buvo ištaisytos), todėl atleiskite.

TAIP…

Pradėkime kelionę ………………

2 žingsnis: Kur aš žinojau apie dalykus?

Kur aš žinojau apie dalykus?
Kur aš žinojau apie dalykus?
Kur aš žinojau apie dalykus?
Kur aš žinojau apie dalykus?
Kur aš žinojau apie dalykus?
Kur aš žinojau apie dalykus?

Tai bus pagrindinis klausimas, manau, kad dauguma jūsų minčių galėjo perbėgti ………..

Mokydamasi labai aistringai vertinu dirbtinį intelektą [AI], todėl daug ieškojau ieškodamas išteklių, kad galėčiau mokytis ir pats kurti modelį.

Iš pradžių tai buvo labai sunku (tikra sąlyga), nes supratau, kad tai labai plati tema, kurią nėra lengva valdyti.

Knygos, kurios buvo peržiūrėtos, apima:

  1. Dirbtinis intelektas - modernus požiūris
  2. Dirbtinis. Intelektas. XXI amžiuje. 2 -asis
  3. Gilus mokymasis

Tai labai geros knygos (taip, tikrai), bet visai nelengva suprasti tai, kas buvo parašyta. Tada aš ją laikiau nuošalyje ir toliau ieškau išteklių, kurie suteikia trumpą idėją apie tai, kas tai tikrai atspindi būdus ir būdus, kaip su juo susitvarkyti.

Tada aš susidomėjau tuo. Per atostogas po mokyklos pradėjau giliau apie tai sužinoti.

Tuo metu aš taip pat išmokau įvairių programavimo kalbų (C ++, C, Python, Java …), kurios per daug įdomios.

Skaitydama daugiau šia tema supratau vieną svarbų dalyką ………………..

Programavimo kalbos yra PAGRINDAS kiekvienam mašinos mokymosi procesui

Mašinų mokymasis yra AI taikymo procesas

Puikiai suprasdami programavimo kalbas ir įvairius dalykus, kuriuos programuotojas gali padaryti, kad kompiuteris padarytų viską už mus.

Taigi nusprendžiau sukurti gerą pagrindą kalbomis, kurios privertė mane suprasti knygoje pateiktas sąvokas, kurias jau minėjau

Jūs taip pat galite tai padaryti ……

Žiniatinklyje yra tiek daug svetainių, kuriose galima laisvai mokyti programavimo kalbų

Taigi, jei norite, galite naršyti internete, kad sužinotumėte daugiau apie tai ………

3 žingsnis: pradėkime

Prieš pradėdamas rašyti „Instructable“, sugalvojau parašyti kažką tokio, ką suprastų:

  1. Žmonės, turintys kodavimo patirties
  2. Žmonės be jokio kodavimo pagrindo

Taigi manau, kad tai padariau be klaidų (tikiuosi).

Taigi nusprendžiau sukurti pokalbių robotą, kuris galėtų kalbėti su vartotoju ir galėtų atsakyti pagal mūsų kalbą.

Programa (instrukcijų rinkinys) negali mąstyti savarankiškai. Jame yra duomenų bazė (vieta, kurioje buvo saugomi duomenys) faktų ir taisyklių, kurių ieškoma pokalbio metu, kad būtų galima kuo geriau reaguoti į vartotoją.

Jis veikia suderinant procesą, atsižvelgiant į įvestus dalykus, tik retais atvejais visas sakinys suderinamas su visu sakiniu.

4 žingsnis: kaip tai iš tikrųjų veikia?

1 žingsnis:

„MAX“išsiaiškina, ar vartotojas įvedė nulinį įvestį. Jei vartotojas įvedamas tokiu būdu, atsako faktas iš statinės duomenų bazės.

Oi, atsiprašau ……

Pamiršau pasakyti,

Statinė duomenų bazė: vieta, kurioje saugomi įmontuoti atsakymai. Tokie atsakymai:

1. Kai MAX nesupranta, apie ką kalba vartotojas.

2. Kai vartotojas kartojasi.

3. Dėl sveikinimo pareiškimų.

4. Kai vartotojas nieko neįveda ir tiesiog toliau spaudžia Enter.

Raktažodis: žodžiai, turintys ypatingą reikšmę.

2 žingsnis:

Yra keletas integruotų atsakymų, kuriuos MAX gali lengvai ir lengvai atpažinti. Nustačius vartotojų įvestį, jis nustato, ar yra toks sakinys, ir prisimena susijusį raktinį žodį.

3 žingsnis:

Jei net ir fragmentuojant pateiktą sakinį nerandama integruoto sakinio, MAX ieško konkretaus raktinio žodžio, kad apibrėžtų kontekstą. Jei nerandamas kontekstas, kitas tikslas yra priversti vartotoją kalbėti sąmoningai ir konkrečiai.

4 žingsnis:

Iš statinės duomenų bazės, apie kurią jau kalbėjome, ji gaus atsakymą, kuris priklauso nuo to, apie ką vartotojas kalbėjo.

5 žingsnis:

Man reikia pakeisti žodžius, kuriuos jis padarys pats (pvz., MANO atsivertimas į TAVĮ ir tt …)

5 žingsnis: koduokime …………

Aš naudoju „Turbo C IDE 3.0“, nes tai yra IDE [integruota vystymosi aplinka]

Prieš kodavimą, pažvelkime į duomenų failo pavyzdžio struktūrą.

MAX atpažįsta tam tikrus raktinius žodžius.

Jei šie raktiniai žodžiai randami vartotojo įvestyje, iš duomenų failo pasirenkamas atitinkamas atsakymas, kuris pasirenkamas ir rodomas ekrane.

Raktinis žodis duomenų faile nuo atsakymų yra atskirtas @ KWD @ žetonu.

Žetonas yra mažiausia kiekvieno programavimo aspekto dalis.

Šis simbolis reiškia, kad kita eilutė yra raktinis žodis, o ne atsakymas.

@ KWD@ SVEIKI

LABAS KAIP SEKASI

LABAS BRANGUSIS !

MAN VISKAS GERAI

KAIP JŪSŲ DARBAS?

KIEK TAU METŲ?

TAIP

TU PADARysi. As irgi TIKIU…

AR GALITE TAI PADARYTI?

AR TIKĖSI MANI?

TAIP

AR TU TUO TIKRAS ?

KAIP GALI BŪTI TIKRA?

NE

MATYTI LABAI PESIMISTIKA.

NIEKADA nesakyk NE…

NIEKADA NESAKYK NIEKADA

NIEKADA BŪKITE GRŪDAS

NIEKADA NEBŪKITE ĮMONĖS !!!!

NIEKADA NESAKYK, KAD ŠIO NEGALIU

NIEKADA BŪTI OPTIMISTINIS

KOMPIUTERIS

ŽINAU KAIP DARBUOTI KOMPIUTERIU.

DABAR NAUDOTI KOMPIUTERĮ. TEISINGAI?

Pavyzdžiui, „Sveiki“iš aukščiau pateikto žodyno, MAX pateiks vieną iš šių atsakymų:

Sveiki, KAIP JŪS SVEIKI Brangieji!

MAN VISKAS GERAI

KAIP JŪSŲ DARBAS?

KIEK TAU METŲ?

6 žingsnis: pamokos

Kai tai bus aišku, dabar apibrėžkime duomenų struktūras, kurias naudosime.

Mes kuriame dvi klases:

progstr - Tai naudojama vartotojo įvesties informacijai saugoti.

resp - Tai naudojama informacijai apie įvairius atsakymus saugoti

klasės programa {

viešas:

char userip [MAX_USER_INPUT];

char raktažodis [30];

int keyfound;

int keyno;

int nullip;

// konstruktorius

progstr () {keyno = -1; nullip = 0; surastas raktas = 0;

}

} ip;

klasė resp

{

int tot_resp;

int last_resp;

atsakymai į simbolius [MAX_RESP_NO] [MAX_RESP_LEN];

angliškas žodis [MAX_KWD_LEN];

viešas:

// konstruktorius

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

return last_resp;

}

negaliojantis papildomas žodis (char str [MAX_KWD_LEN])

{

strcpy (žodis, str);

}

char * getword ()

{

grąžinimo žodis;

}

negaliojantis adresas (char str [MAX_RESP_LEN])

{

strcpy (atsakymai [++ paskutinis_atsakymas], str);

}

// apibrėžta vėliau

void display_resp (int num);

void quit_display_resp (int num);

};

Žvelgiant į pirmą klasę, Simbolių masyvas userip naudojamas vartotojo pateiktam sakiniui saugoti.

Kitas masyvo raktinis žodis naudojamas toje įvestyje esančiam raktiniam žodžiui, jei toks yra, saugoti. Jei rastas raktinis žodis, int klavišą surandame dar 1, jis lieka 0, nes konstruktoriuje jis inicijuojamas iki 0.

„keyno“saugo atitinkamo raktažodžio atitinkamą rakto numerį.

„nullip“nurodo, ar vartotojas įvedė „Null“įvestį, ty jis tiesiog spaudžia „Enter“ir nieko nedaro.

Dabar pereikime prie antros klasės, resp.

Pirmasis duomenų narys tot_resp nurodo visų atsakymų skaičių pagal tam tikrą raktinį žodį.

Atsakymai iš tikrųjų saugomi atsakymuose [MAX_RESP_NO] [MAX_RESP_LEN], o atitinkamas raktinis žodis saugomas masyvo žodyje.

Konstruktorius: jis naudojamas inicijuoti bendrą atsakymų skaičių į 0. Kodėl last_resp inicijuojamas į -1, bus aišku, kai pažvelgsite į funkciją add_resp.

int getcount ():

Ši funkcija naudojama norint suskaičiuoti, kiek atsakymų yra už tam tikrą raktinį žodį.

negaliojantis papildomas žodis (char str [MAX_KWD_LEN]):

Tai naudojama raktiniam žodžiui pridėti.

char * getword ():

Naudojamas tam tikro klasės objekto raktiniam žodžiui grąžinti.

negaliojantis adresas (…):

Tai naudojama norint pridėti atsakymą, atitinkantį nurodytą raktinį žodį.

void display_resp (int):

Tai naudojama norint parodyti atsakymą vartotojui, atitinkantį nurodytą atsakymų indekso numerį. (iš tikrųjų tai daro daugiau nei tai!).

void quit_display_resp (int):

Skirtumas tarp šios ir aukščiau nurodytos funkcijos yra tas, kad jis galiausiai naudojamas, kai vartotojas išeina. Taigi, jis negrąžina raginimo vartotojui.

7 žingsnis: Funkcijos

void initialize_global ()

{

strcpy (wordin [0], "ARE");

strcpy (žodis [0], „AM“);

strcpy (wordin [1], „AM“);

strcpy (žodis [1], „ARE“);

strcpy (wordin [2], „BUVO“);

strcpy („wordout“[2], „WAS“);

strcpy (wordin [3], "WAS");

strcpy (žodis [3], „BUVO“);

strcpy (wordin [4], „TU“);

strcpy (žodis [4], „aš“);

strcpy (wordin [5], „aš“);

strcpy (žodis [5], „TU“);

strcpy (wordin [6], „TAVO“);

strcpy (žodis [6], „MANAS“);

strcpy (wordin [7], „MANAS“);

strcpy (žodis [7], „TAVO“);

strcpy (wordin [8], „I'VE“);

strcpy (žodis [8], „YOU'VE“);

strcpy (wordin [9], „YOU'VE“);

strcpy (žodis [9], „I'VE“);

strcpy (wordin [10], „aš“);

strcpy (žodis [10], „TU“);

strcpy (wordin [11], „TU“);

strcpy (žodis [11], „aš“);

strcpy (wordin [12], „ME“);

strcpy (žodis [12], „TU“);

strcpy (wordin [13], „TU“);

strcpy (žodis [13], „aš“);

}

Dabar parašykime atsakymų rodymo vartotojui funkciją. Pirmasis if sakinys for for yra naudojamas tyčinei spausdinimo klaidai padaryti, kad ji atrodytų žmogiškesnė;-). Įvedimo klaidai atsitiktinai pasirenkamas vienas simbolis. Specialūs atvejai, tokie kaip „New Line“ir „Backspace“, yra svarstomi atskirai. (Pagalvok kodėl?). Dabar pristatau kažką naujo. Ypatingas simbolis - *. Char * reiškia visą tekstą, rastą po identifikuoto raktažodžio ir prieš vieną iš šių skyrybos ženklų.

Pavyzdžiui, apsvarstykite vartotojo įvestį

AMIT> AR RYTOJU GALIU IŠVYKTI?

MAX> KAS, JEI NIEKADA RYTINĖS NEPRIKLAUSYTI?

Pabraukta dalis nėra saugoma žodyne, o paimta iš vartotojo įvesties. Faile MAX. Dat šią informaciją saugome kaip

AR GALIU

Ką daryti, jei to nedarysite *

Žvaigždė (*) prašo programos tiesiog nukopijuoti viską, kas įvesta po raktažodžio (čia CAN I) vartotojo įvestyje. Tikiuosi, kad dabar * kaip specialaus raktažodžio funkcija yra aiški. Taigi, apsvarstykime sudėtingesnį atvejį.

AMIT> AR GALIU PIRKTI?

MAX> KAS YRA, jei NENUOSTAI PIRKTI?

Mes taip pat turime atlikti tam tikrą transformaciją. Kai galvojame apie transformaciją, sakinys padalijamas į šiuos 3 skyrius:

  • Tekstas prieš perkėlimo žodį. (čia, PIRKTI SU)
  • Perkeltas raktinis žodis. (čia, TAVO, vietoj MANO)
  • Raktinis žodis po perkėlimo. (čia, aš?)

8 žingsnis: bylas galima išspręsti ………………

9 veiksmas: ieškokite raktažodžio naudotojo įvestyje

MAX_KEY nurodo raktinių žodžių skaičių DAT faile.

Mes čia tiesiog ieškome, ar raktinis žodis yra naudotojo įvestyje.

10 žingsnis: Išvada

Tai viskas ………

Jūs tai padarėte !!!!!!!

Manau, kad visi aiškiai suprato dalykus …

Rekomenduojamas: