Innehållsförteckning:
- Steg 1: Hårdvara
- Steg 2:
- Steg 3: Programação - Detecção De Voz
- Steg 4: Programação - Exibir Previsão Do Tempo
- Steg 5: Programação - Exibir Notícias
- Steg 6: Slutsats
Video: Espelho Mágico: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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
Dragonboard 410c
Audio Mezzanine Board
Steg 2:
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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)