Tartalomjegyzék:
- 1. lépés: Hardver
- 2. lépés:
- 3. lépés: Programação - Detecção De Voz
- 4. lépés: Programação - Exibir Previsão Do Tempo
- 5. lépés: Programação - Exibir Notícias
- 6. lépés: Conclusão
Videó: Espelho Mágico: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta information of clima e notícias, utilizando comandos de voz.
Embora seja o projeto de um espelho, ha nem tudja használni a devido -t és a contratempos -t.
1. lépés: Hardver
Dragonboard 410c
Audio Mezzanine Board
2. lépés:
Para a programção foi utilizado o Visual Studio Community 2017, e a linguagem c#. A kezelőfelület használható a XAML Visual Studio szerkesztőjében.
3. lépés: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. A Placa Audio Mezzanine Board játssza a mikrofonokat, és használja a mikrofonokat. No Visual Studio, biblioteca Windows. Media. SpeechRecognition para decodificar a voz.
Foi utilizado o método encontrado aqui para in inicialização da detecção de voz, que é mostrado também abaixo.
private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("hu-US"); SpeechRecognizer felismerő = új SpeechRecognizer (idioma); felismerő.állapotChanged += RecognizerStateChanged; felismerő. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = wait Package. Current. InstalledLocation. GetFileAsync (fájlnév); BeszédfelismerésGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); felismerő. Korlátozások. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = várja a felismerőt. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); várja a felismerőt. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Állapot:" + compilationResult. Status); }}
Após iniciar o reconhecimento, vagy met 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 prognosis (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Ellenőrizze a különböző címkéket, és inicializálja a változókat
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 (): "";
// Először ellenőrizze, hogy a felhasználó melyik eszközre hivatkozik
if (cmd. Equals ("show"))
{
if (device. Equals ("előrejelzés")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Nem ismert eszköz "); }
} else if (cmd. Equals ("hide"))
{
if (device. Equals ("előrejelzés")) {//Tempo. Text = ""; várd meg ezt. = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {wait to this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ez most működik, mert a felhasználói felületen fut: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Ismeretlen eszköz"); }} else {//Debug. WriteLine("Unknown Command "); }
}
4. lépés: Programação - Exibir Previsão Do Tempo
Az előrejelzések megjelenítéséhez kattintson a Consulta_previsao envia uma requisição HTTP ao 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 as temperaturas máxima e mínima.
private async void Consulta_previsao () {
HttpClient httpcliente = új 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"). Eredmény; ill. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = new XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement gyökere = previsao. DocumentElement;
XmlNodeList csomópontok = root. GetElementsByTagName ("tempo");
string prevtempo = (csomópontok. Item (0). Belső szöveg);
string prevtempo1 = (csomópontok. Tétel (1). Belső szöveg); string prevtempo2 = (csomópontok. Tétel (2). Belső szöveg); string prevtempo3 = (csomópontok. Tétel (3). Belső szöveg); csomópontok = root. GetElementsByTagName ("minimum"); karakterlánc tempmin = (csomópontok. Item (0). Belső szöveg); csomópontok = root. GetElementsByTagName ("maxima"); karakterlánc tempmax = (csomópontok. Item (0). Belső szöveg);
string rsultado_previsao = "";
kapcsoló (előzetes)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; szünet; "ci" eset: rsultado_previsao = "Chuvas_Isoladas.png"; szünet; "c" eset: rsultado_previsao = "Chuva.png"; szünet; case "in": rsultado_previsao = "Instavel.png"; szünet; case "pp": rsultado_previsao = "Chuva.png"; szünet; "cm" eset: rsultado_previsao = "Chuva.png"; szünet; case "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; szünet; "pt" eset: rsultado_previsao = "Chuva.png"; szünet; "pm" eset: rsultado_previsao = "Chuvas_Isoladas.png"; szünet; "np" eset: rsultado_previsao = "Chuva.png"; szünet; tok "pc": rsultado_previsao = "Chuva.png"; szünet; case "pn": rsultado_previsao = "Nublado.png"; szünet; case "cv": rsultado_previsao = "Chuva.png"; szünet; case "ch": rsultado_previsao = "Chuva.png"; szünet; case "t": rsultado_previsao = "Tempestade.png"; szünet; "ps" eset: rsultado_previsao = "Sol.png"; szünet; "e" eset: rsultado_previsao = "Sol_Encoberto.png"; szünet; "n" eset: rsultado_previsao = "Nublado.png"; szünet; case "cl": rsultado_previsao = "Sol.png"; szünet; case "nv": rsultado_previsao = "Nevoeiro.png"; szünet; "g" eset: rsultado_previsao = "Neve.png"; szünet; "ne" eset: rsultado_previsao = "Neve.png"; szünet; "nd" eset: rsultado_previsao = "na.png"; szünet; case "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; szünet; "psc" eset: rsultado_previsao = "Chuva.png"; szünet; "pcm" eset: rsultado_previsao = "Chuva.png"; szünet; case "pct": rsultado_previsao = "Chuva.png"; szünet; "pcn" eset: rsultado_previsao = "Chuva.png"; szünet; case "npt": rsultado_previsao = "Chuva.png"; szünet; "npn" eset: rsultado_previsao = "Chuva.png"; szünet; "ncn" eset: rsultado_previsao = "Chuva.png"; szünet; case "nct": rsultado_previsao = "Chuva.png"; szünet; "ncm" eset: rsultado_previsao = "Chuva.png"; szünet; "npm" eset: rsultado_previsao = "Chuva.png"; szünet; "npp" eset: rsultado_previsao = "Chuva.png"; szünet; case "vn": rsultado_previsao = "Instavel.png"; szünet; "ct" eset: rsultado_previsao = "Chuva.png"; szünet; case "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; szünet; case "ppt": rsultado_previsao = "Chuva.png"; szünet; "ppm" eset: rsultado_previsao = "Chuva.png"; szünet;
}
várd meg ezt. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ez most működik, mert a felhasználói felületen fut: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Képek/" + rsultado_previsao));});
}
5. lépés: Programação - Exibir Notícias
Keresse meg a híreket a show -hírekhez, vagy mutasd ki a Consulta_noticias envia -t, mert meg kell követelnie a HTTP -t a BBC hírcsatornáiból, és töltse le az XML -t. Mint cinco primeiras notícias são exibidas és tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = új HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Eredmény;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = új XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList csomópontok2 = root2. GetElementsByTagName (@"title");
várjon erre. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (csomópontok2. Item (2). Belső szöveg); this. News2. Text = (csomópontok2. Item (3). Belső szöveg); this. News3. Text = (csomópontok2. Item (4). Belső szöveg); this. News4. Text = (csomópontok2. Item (5). Belső szöveg); this. News5. Text = (csomópontok2. Item (6). Belső szöveg);
});
}
6. lépés: Conclusão
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.
Autó: Egon Patrick Marques Silva
Frederico Clark
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
4 lépés az akkumulátor belső ellenállásának méréséhez: 4 lépés
4 lépés az akkumulátor belső ellenállásának mérésére: Íme a 4 egyszerű lépés, amelyek segítenek mérni az akkumulátor belső ellenállását