Innehållsförteckning:

Espelho Mágico: 6 steg
Espelho Mágico: 6 steg

Video: Espelho Mágico: 6 steg

Video: Espelho Mágico: 6 steg
Video: Экстра Блондин! Осветление волос Порошком | Уроки окрашивания волос Евы Лорман пошагово! 2024, November
Anonim
Image
Image

Neste instruktioner kan göras om prototipo 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.

Steg 1: Hårdvara

Hårdvara
Hårdvara

Dragonboard 410c

Audio Mezzanine Board

Steg 2:

Bild
Bild

Para a programação foi utilizado of Visual Studio Community 2017, e a linguagem c#. Ett gränssnitt som kan användas av redigeraren XAML för Visual Studio.

Steg 3: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. En placerad Audio Mezzanine Board är möjlig för mikrofoner som kan användas för att detektera. Ingen Visual Studio, använder en biblioteca Windows. Media. SpeechRecognition för avkodning av en voz.

Foi utilizado o método encontrado aqui para a inicialização da detecção de voz, que é mostrado também abaixo.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer identifierare = ny SpeechRecognizer (idiom); identifierer. StateChanged += RecognizerStateChanged; identifierer. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = inväntar Package. Current. InstalledLocation. GetFileAsync (filnamn); SpeechRecognitionGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); identifierer. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = väntar igenkännare. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Resultat:" + compilationResult. ToString ()); vänta på igenkännare. ContinuousRecognitionSession. StartAsync (); } annat {Debug. WriteLine ("Status:" + compilationResult. Status); }}

Apos iniciar o reconhecimento, o método RecognizerResultGenerated recebe os comandos que foram interpretados e compara com os comandos com os que estão configurados em um arquivo xml que foi criado e inserido na solução.

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 news (notícias).

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

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

// Sök efter olika taggar och initiera variablerna

String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";

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

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

String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("device")?

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

// Kontrollera först vilken enhet användaren hänvisar till

if (cmd. Equals ("visa"))

{

if (device. Equals ("prognos")) {Consulta_previsao (); } annars if (device. Equals ("nyheter")) {Consulta_noticias (); } annat {//Debug. WriteLine("Unknown Device "); }

} annars if (cmd. Equals ("göm"))

{

if (device. Equals ("prognos")) {//Tempo. Text = ""; vänta på detta. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Detta fungerar nu, eftersom det körs på UI -tråden: 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"));

});

}

annars om (device. Equals ("nyheter")) {väntar på this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Detta fungerar nu, eftersom det körs på UI -tråden: detta. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } annat {// Debug. WriteLine ("Okänd enhet"); }} annat {//Debug. WriteLine("Ukänt kommando "); }

}

Steg 4: Programação - Exibir Previsão Do Tempo

Se o comando de voz detectado for show forecast, o método Consulta_previsao envia uma requisição HTTP ao site CPTEC do INPE, que retorna a previsão do tempo em um arquivo xml. Após a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão e também são mostradas som temperaturer máxima e minima.

privat asynk 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 = nytt XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

XmlNodeList -noder = root. GetElementsByTagName ("tempo");

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

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

string rsultado_previsao = "";

switch (föregående tempo)

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

}

vänta på detta. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Detta fungerar nu, eftersom det körs på UI -tråden: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = ny BitmapImage (ny Uri ("ms-appx: /// Bilder/" + rsultado_previsao));});

}

Steg 5: Programação - Exibir Notícias

Se o comando detectado for show news, o método Consulta_noticias envia uma requisição HTTP ao feed de notícias from BBC, que também retorna um XML. Som cinco primeiras notícias são exibidas och tela em textblocks.

privat asynk void Consulta_noticias () {

HttpClient httpcliente2 = new HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

vänta på detta. 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);

});

}

Steg 6: Slutsats

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

Författare: Egon Patrick Marques Silva

Frederico Clark

Rekommenderad: