Cov txheej txheem:

Cov Lus Qhia: 6 Kauj Ruam
Cov Lus Qhia: 6 Kauj Ruam

Video: Cov Lus Qhia: 6 Kauj Ruam

Video: Cov Lus Qhia: 6 Kauj Ruam
Video: Lus Qhuab Qhia Cov kauj ruam uas qhia ze ze Tswv Yexus yuav los lawm tiag 2024, Kaum ib hlis
Anonim
Image
Image

Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta informações de clima e notícias, utilizando comandos de voz.

Embora seja o projeto de um espelho, não houve como utilizar um devido a contratempos.

Kauj ruam 1: Kho vajtse

Kho vajtse
Kho vajtse

Zaj 410c

Suab Mezzanine Board

Kauj ruam 2:

Duab
Duab

Para a programação foi utilizado o Visual Studio Community 2017, a linguagem c#. Tus interface gráfica foi feita siv los yog tus kho XAML ua Visual Studio.

Kauj Ruam 3: Txoj Haujlwm - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. Lub suab kaw suab Mezzanine Board jos possui dois microfones integrados, que foram utilizados para a detecção. Tsis muaj Visual Studio, siv cov ntaub ntawv hauv Windows. Media. SpeechRecognition para decodificar a voz.

Kev siv cov cuab yeej siv hluav taws xob los ntawm cov cuab yeej hluav taws xob rau kev ua haujlwm tsis raug cai los ntawm voz, que é mostrado também abaixo.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer lees paub = SpeechRecognizer tshiab (idioma); recognizer. StateChanged += RecognizerStateChanged; recognizer. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; hlua fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = tos Package. CurrentInstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = tshiab SpeechRecognitionGrammarFileConstraint (grammarContentFile); recognizer. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = tos tos lees paub. CompileConstraintsAsync (); yog (muab tso ua keResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); tos tus lees paub. ContinuousRecognitionSession. StartAsync (); } lwm {Debug. WriteLine ("Status:" + compilationResult. Status); }}

Após iniciar o reconhecimento, o método RecognizerResult

Como não foi possível inserir o idioma português, os comandos utilizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado forecast (previsão) e xov xwm (notícias).

private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {

int suav = args. Result. SemanticInterpretation. Properties. Count;

// Txheeb rau cov cim sib txawv thiab pib ua qhov hloov pauv

Txoj hlua txoj hlua = args. Result. SemanticInterpretation. Properties. ContainsKey ("phiaj")? args. Result. SemanticInterpretation. Properties ["phiaj"] [0]. ToString (): "";

Txoj hlua cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";

Txoj hlua ntaus ntawv = args. Result. SemanticInterpretation. Properties. ContainsKey ("ntaus ntawv")?

args. Result. SemanticInterpretation. Properties ["ntaus ntawv"] [0]. ToString (): "";

// Ua ntej txheeb xyuas lub cuab yeej twg tus neeg siv hais txog

yog (cmd. Equals ("qhia"))

{

yog (device. Equals ("forecast")) {Consulta_previsao (); } lwm yog (device. Equals ("news")) {Consulta_noticias (); } lwm tus {//Debug. WriteLine("Unknown Device "); }

} lwm yog (cmd. Equals ("nkaum"))

{

yog (device. Equals ("forecast")) {//Tempo. Text = ""; tos qhov no. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Qhov no tam sim no ua haujlwm, vim nws tau ua haujlwm ntawm UI xov: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = tshiab BitmapImage (tshiab Uri ("ms-appx: ///Images/blank.png"));

});

}

lwm tus yog (device. Equals ("news")) {tos qhov no. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Qhov no tam sim no ua haujlwm, vim nws tau ua haujlwm ntawm UI xov: qhov no. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } lwm tus {// Debug. WriteLine ("Tsis paub ntaus ntawv"); }} lwm {//Debug. WriteLine("Unknown Command "); }

}

Kauj Ruam 4: Txoj Haujlwm - Exibir Previsão Do Tempo

Se o comando de voz detectado rau qhia huab cua, o método Consulta_previsao envia uma requisição HTTP ao site CPTEC ua INPE, que retorna a previsão do tempo em um arquivo xml. Após leitura do xml, uma imagem é mostrada na tela de acordo com a previsão e também são mostradas as temperaturas máxima e mínima.

ntiag tug async void Consulta_previsao () {

HttpClient httpcliente = tshiab 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 = tshiab XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement paus = previsao. DocumentElement;

XmlNodeList nodes = root. GetElementsByTagName ("tempo");

hlua prevtempo = (nodes. Item (0). InnerText);

hlua prevtempo1 = (nodes. Item (1). InnerText); hlua prevtempo2 = (nodes. Item (2). InnerText); hlua prevtempo3 = (nodes. Item (3). InnerText); nodes = root. GetElementsByTagName ("minima"); hlua tempmin = (nodes. Khoom (0). InnerText); nodes = root. GetElementsByTagName ("maxima"); hlua tempmax = (nodesItem (0). InnerText);

hlua rsultado_previsao = "";

hloov (prevtempo)

{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; tawg; rooj plaub "ci": rsultado_previsao = "Chuvas_Isoladas.png"; tawg; rooj plaub "c": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "hauv": rsultado_previsao = "Instavel.png"; tawg; rooj plaub "pp": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "cm": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tawg; rooj plaub "pt": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pm": rsultado_previsao = "Chuvas_Isoladas.png"; tawg; case "np": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pc": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pn": rsultado_previsao = "Nublado.png"; tawg; rooj plaub "cv": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "ch": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "t": rsultado_previsao = "Tempestade.png"; tawg; rooj plaub "ps": rsultado_previsao = "Sol.png"; tawg; rooj plaub "e": rsultado_previsao = "Sol_Encoberto.png"; tawg; rooj plaub "n": rsultado_previsao = "Nublado.png"; tawg; rooj plaub "cl": rsultado_previsao = "Sol.png"; tawg; rooj plaub "nv": rsultado_previsao = "Nevoeiro.png"; tawg; rooj plaub "g": rsultado_previsao = "Neve.png"; tawg; rooj plaub "ne": rsultado_previsao = "Neve.png"; tawg; rooj plaub "nd": rsultado_previsao = "na.png"; tawg; rooj plaub "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tawg; rooj plaub "psc": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pcm": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pct": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "pcn": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "npt": rsultado_previsao = "Chuva.png"; tawg; case "npn": rsultado_previsao = "Chuva.png"; tawg; case "ncn": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "nct": rsultado_previsao = "Chuva.png"; tawg; case "ncm": rsultado_previsao = "Chuva.png"; tawg; case "npm": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "npp": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "vn": rsultado_previsao = "Instavel.png"; tawg; rooj plaub "ct": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tawg; rooj plaub "ppt": rsultado_previsao = "Chuva.png"; tawg; rooj plaub "ppm": rsultado_previsao = "Chuva.png"; tawg;

}

tos qhov no. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Qhov no tam sim no ua haujlwm, vim nws tau ua haujlwm ntawm UI xov: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = tshiab BitmapImage (tshiab Uri ("ms-appx: /// Cov duab/" + rsultado_previsao));});

}

Kauj Ruam 5: Txoj Haujlwm - Exibir Notícias

Se o comando detectado rau qhia xov xwm, o método Consulta_noticias envia uma requisição HTTP ao pub de notícias da BBC, que também retorna um XML. Raws li cinco primeiras notícias são exibidas na tela em textblocks.

ntiag tug async void Consulta_noticias () {

HttpClient httpcliente2 = tshiab HttpClient ();

var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/port Portuguese/rss.xml"). Result;

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = tshiab XmlDocument ();

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

XmlNodeList nodes2 = root2. GetElementsByTagName (@"npe");

tos qhov no. 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);

});

}

Kauj Ruam 6: Xaus

Ao reproduzir esse instructables, será possível realizar detecção de comandos de voz utilizando alguma placa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.

Tus sau: Egon Patrick Marques Silva

Frederico Clark

Pom zoo: