Cuprins:
- Pasul 1: Hardware
- Pasul 2:
- Pasul 3: Programare - Detectare De Voz
- Pasul 4: Programare - Exibir Previsão Do Tempo
- Pasul 5: Programare - Exibir Notícies
- Pasul 6: Concluzie
Video: Espelho Mágico: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Neste Instructables mostramos as criar um protótipo de um spelho inteligente that project information Informații despre clima și notificări, folosind comenzi de voce.
Embora seja o projeto de um spelho, não houve as use um devido a contractempos.
Pasul 1: Hardware
Dragonboard 410c
Audio Mezzanine Board
Pasul 2:
Pentru un program folosit de Visual Studio Community 2017, e a linguagem c #. O interfață grafică a fost folosită de editorul XAML de Visual Studio.
Pasul 3: Programare - Detectare De Voz
O primul pas, a fost de lucru cu o detecție de voce. A placa Audio Mezzanine Board are dois microfones integrated, that foram used for a detecção. No Visual Studio, utilizează o bibliotecă Windows. Media. SpeechRecognition pentru a decodifica o voce.
Foi utilizado o method found aqui for a initialização da detecção de voz, that is mostrado alsom abaixo.
private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer recognizer = nou SpeechRecognizer (idioma); recognizer. StateChanged + = RecognizerStateChanged; recognizer. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = așteaptă Package. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); recognizer. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = await recognizer. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Rezultat:" + compilationResult. ToString ()); așteaptă recognizer. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}
Apos init o reconhecimento, o method RecognizerResultGenerated recebe os commandos that foram interpretados e compara com os comandos com os that estão configurados em um arquivo xml that was criado and inserido na solutionção.
Como não foi possível inserir o idioma português, os commandos used foram show (mostrar) e hide (esconder) e o that deve ser mostrado forecast (previsão) e news (noticias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Verificați dacă există diferite etichete și inițializați variabilele
String target = args. Result. SemanticInterpretation. Properties. ContainsKey („țintă”)? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Șir cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
String device = args. Result. SemanticInterpretation. Properties. ContainsKey („dispozitiv”)?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Mai întâi verificați la ce dispozitiv se referă utilizatorul
if (cmd. Equals („arată”))
{
if (device. Equals ("forecast")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Unknown Device "); }
} else if (cmd. Equals ("ascunde"))
{
if (device. Equals ("forecast")) {//Tempo. Text = ""; așteaptă this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Acum funcționează, deoarece rulează pe firul UI: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {{așteaptă this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Acum funcționează, deoarece rulează pe firul UI: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Dispozitiv necunoscut"); }} else {//Debug. WriteLine("Comanda necunoscută "); }
}
Pasul 4: Programare - Exibir Previsão Do Tempo
Se o comandă de voce detectată pentru prognoza spectacolului, sau o metodă Consulta_previsao envia uma cerere HTTP sau site-ul CPTEC do INPE, care returna previziunea do tempo em um arquivo xml. Após a leitura do xml, uma imagem é mostrada na tela de acord com a previsão și prea são mostradas as temperaturas maximum e minimum.
private async void Consulta_previsao () {
HttpClient httpcliente = new HttpClient ();
// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Result; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Result; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = new XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
XmlNodeList noduri = root. GetElementsByTagName ("tempo");
șir prevtempo = (nodes. Item (0). InnerText);
șir prevtempo1 = (noduri. Item (1). InnerText); șir prevtempo2 = (noduri. Item (2). InnerText); șir prevtempo3 = (noduri. Item (3). InnerText); noduri = root. GetElementsByTagName ("minime"); string tempmin = (nodes. Item (0). InnerText); noduri = root. GetElementsByTagName ("maxima"); șir tempmax = (nodes. Item (0). InnerText);
șir rsultado_previsao = "";
comuta (prevtempo)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; pauză; cazul "ci": rsultado_previsao = "Chuvas_Isoladas.png"; pauză; cazul "c": rsultado_previsao = "Chuva.png"; pauză; caz "în": rsultado_previsao = "Instavel.png"; pauză; caz "pp": rsultado_previsao = "Chuva.png"; pauză; caz "cm": rsultado_previsao = "Chuva.png"; pauză; caz "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pauză; caz "pt": rsultado_previsao = "Chuva.png"; pauză; cazul "pm": rsultado_previsao = "Chuvas_Isoladas.png"; pauză; case "np": rsultado_previsao = "Chuva.png"; pauză; case "pc": rsultado_previsao = "Chuva.png"; pauză; cazul "pn": rsultado_previsao = "Nublado.png"; pauză; case "cv": rsultado_previsao = "Chuva.png"; pauză; caz "ch": rsultado_previsao = "Chuva.png"; pauză; caz "t": rsultado_previsao = "Tempestade.png"; pauză; caz "ps": rsultado_previsao = "Sol.png"; pauză; cazul "e": rsultado_previsao = "Sol_Encoberto.png"; pauză; cazul "n": rsultado_previsao = "Nublado.png"; pauză; caz "cl": rsultado_previsao = "Sol.png"; pauză; cazul "nv": rsultado_previsao = "Nevoeiro.png"; pauză; cazul "g": rsultado_previsao = "Neve.png"; pauză; case "ne": rsultado_previsao = "Neve.png"; pauză; cazul "nd": rsultado_previsao = "na.png"; pauză; cazul "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pauză; cazul "psc": rsultado_previsao = "Chuva.png"; pauză; cazul "pcm": rsultado_previsao = "Chuva.png"; pauză; cazul "pct": rsultado_previsao = "Chuva.png"; pauză; case "pcn": rsultado_previsao = "Chuva.png"; pauză; caz "npt": rsultado_previsao = "Chuva.png"; pauză; cazul "npn": rsultado_previsao = "Chuva.png"; pauză; cazul "ncn": rsultado_previsao = "Chuva.png"; pauză; caz "nct": rsultado_previsao = "Chuva.png"; pauză; case "ncm": rsultado_previsao = "Chuva.png"; pauză; cazul "npm": rsultado_previsao = "Chuva.png"; pauză; cazul "npp": rsultado_previsao = "Chuva.png"; pauză; cazul "vn": rsultado_previsao = "Instavel.png"; pauză; case "ct": rsultado_previsao = "Chuva.png"; pauză; caz "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pauză; caz "ppt": rsultado_previsao = "Chuva.png"; pauză; caz "ppm": rsultado_previsao = "Chuva.png"; pauză;
}
așteptați this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Acum funcționează, deoarece rulează pe firul UI: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Minima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Imagini / "+ rsultado_previsao));});
}
Pasul 5: Programare - Exibir Notícies
Se comandă detectat pentru știri de spectacol, sau metodă Consulta_noticias envia uma cerere HTTP ca feed de notificări de la BBC, care se returna și XML. As five primeiras noticias são exibidas na tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = new HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/port portuguese/rss.xml"). Rezultat;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = new XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList nodes2 = root2. GetElementsByTagName (@ "title");
așteaptă acest lucru. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (nodes2. Item (2). InnerText); this. News2. Text = (nodes2. Item (3). InnerText); this. News3. Text = (nodes2. Item (4). InnerText); this. News4. Text = (nodes2. Item (5). InnerText); this. News5. Text = (nodes2. Item (6). InnerText);
});
}
Pasul 6: Concluzie
Reproducerea lor este instructabilă, va fi posibilă realizarea detecției de comenzi de voce folosind o placă cu o componentă Windos IoT Core instalată. Basta criar o arquivo de gramática com os comandos desejados.
Autori: Egon Patrick Marques Silva
Frederico Clark
Recomandat:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?