Sisällysluettelo:
- Vaihe 1: Laitteisto
- Vaihe 2:
- Vaihe 3: Programação - Detecção De Voz
- Vaihe 4: Programação - Exibir Previsão Do Tempo
- Vaihe 5: Programação - Exibir Notícias
- Vaihe 6: Conclusão
Video: Espelho Mágico: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
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 tai projeto de um espelho, ei tarvitse käyttää hyödyksi devido ja contratempos.
Vaihe 1: Laitteisto
Dragonboard 410c
Audio Mezzanine Board
Vaihe 2:
Ohjelman käyttäminen Visual Studio Community 2017: ssä ja kielenkäyttö c#. Käyttöliittymä, joka on tarkoitettu käytettäväksi tai XAML -editori Visual Studioon.
Vaihe 3: Programação - Detecção De Voz
O primeiro passo, trabalhar com a detecção de voz. Placa Audio Mezzanine Board -levyllä on integroidut mikrofonit, jotka voidaan käyttää hyväkseen. Ei Visual Studiota, joka käyttää Windows. Media. SpeechRecognition -kirjastoa.
Käytettävissäsi on metotodistus, joka on tarkoitettu aloitusviestille, joka on voidetussa tilassa, ja tämä on paras.
private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer -tunnistin = uusi SpeechRecognizer (idioma); tunnistin. StateChanged += RecognizerStateChanged; tunnistin. JatkuvaRecognitionSession. ResultGenerated += RecognizerResultGenerated; merkkijono tiedostonimi = Jono. Muoto (SRGS_FILE); StorageFile grammarContentFile = odota Package. Current. InstalledLocation. GetFileAsync (tiedostonimi); SpeechRecognitionGrammarFileConstraint kielioppiConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); tunnistin. Rajoitukset. Add (kielioppirajoitus); SpeechRecognitionCompilationResult compilationResult = odottaa tunnistinta. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); odota tunnistinta. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Tila:" + compilationResult. Status); }}
Após iniciar o reconhecimento, or método RecognizerResultGenerated recebe os comandos que foram interpretados and 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 előre (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Tarkista eri tunnisteet ja alusta muuttujat
Merkkijono kohde = args. Result. SemanticInterpretation. Properties. ContainsKey ("kohde")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
String cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
Merkkijonolaite = args. Result. SemanticInterpretation. Properties. ContainsKey ("laite")?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Tarkista ensin, mihin laitteeseen käyttäjä viittaa
jos (cmd. Equals ("näytä"))
{
if (device. Equals ("ennuste")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Tuntematon laite "); }
} muu jos (cmd. Equals ("piilota"))
{
if (device. Equals ("ennuste")) {//Tempo. Text = ""; odota this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = uusi BitmapImage (uusi Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {wait to this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: tämä. Uutiset1. Teksti = ""; tämä. Uutiset2. Teksti = ""; tämä. Uutiset3. Teksti = ""; tämä. Uutiset4. Teksti = ""; tämä. Uutiset5. Teksti = "";}); } else {// Debug. WriteLine ("Tuntematon laite"); }} else {//Debug. WriteLine("Tuntematon komento "); }
}
Vaihe 4: Programação - Exibir Previsão Do Tempo
Jos haluat nähdä ennusteen komennon, voit kysyä tietoja 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 and também são mostradas as temperaturas máxima e mínima.
private async void Consulta_previsao () {
HttpClient httpcliente = uusi 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"). Tulos; tai. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = uusi XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
XmlNodeList solmut = root. GetElementsByTagName ("tempo");
merkkijono prevtempo = (solmut. Item (0). InnerText);
merkkijono prevtempo1 = (solmut. Item (1). InnerText); merkkijono prevtempo2 = (solmut. Item (2). InnerText); merkkijono prevtempo3 = (solmut. Item (3). InnerText); solmut = root. GetElementsByTagName ("minimit"); merkkijono tempmin = (solmut. Item (0). InnerText); solmut = root. GetElementsByTagName ("maxima"); merkkijono tempmax = (solmut. Item (0). InnerText);
merkkijono rsultado_previsao = "";
kytkin (aikaisempi)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; tauko; case "ci": rsultado_previsao = "Chuvas_Isoladas.png"; tauko; tapaus "c": rsultado_previsao = "Chuva.png"; tauko; case "in": rsultado_previsao = "Instavel.png"; tauko; tapaus "pp": rsultado_previsao = "Chuva.png"; tauko; tapaus "cm": rsultado_previsao = "Chuva.png"; tauko; case "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tauko; tapaus "pt": rsultado_previsao = "Chuva.png"; tauko; tapaus "pm": rsultado_previsao = "Chuvas_Isoladas.png"; tauko; tapaus "np": rsultado_previsao = "Chuva.png"; tauko; tapaus "pc": rsultado_previsao = "Chuva.png"; tauko; tapaus "pn": rsultado_previsao = "Nublado.png"; tauko; case "cv": rsultado_previsao = "Chuva.png"; tauko; tapaus "ch": rsultado_previsao = "Chuva.png"; tauko; case "t": rsultado_previsao = "Tempestade.png"; tauko; tapaus "ps": rsultado_previsao = "Sol.png"; tauko; case "e": rsultado_previsao = "Sol_Encoberto.png"; tauko; tapaus "n": rsultado_previsao = "Nublado.png"; tauko; tapaus "cl": rsultado_previsao = "Sol.png"; tauko; tapaus "nv": rsultado_previsao = "Nevoeiro.png"; tauko; tapaus "g": rsultado_previsao = "Neve.png"; tauko; tapaus "ne": rsultado_previsao = "Neve.png"; tauko; tapaus "nd": rsultado_previsao = "na.png"; tauko; case "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tauko; tapaus "psc": rsultado_previsao = "Chuva.png"; tauko; tapaus "pcm": rsultado_previsao = "Chuva.png"; tauko; case "pct": rsultado_previsao = "Chuva.png"; tauko; tapaus "pcn": rsultado_previsao = "Chuva.png"; tauko; tapaus "npt": rsultado_previsao = "Chuva.png"; tauko; tapaus "npn": rsultado_previsao = "Chuva.png"; tauko; tapaus "ncn": rsultado_previsao = "Chuva.png"; tauko; case "nct": rsultado_previsao = "Chuva.png"; tauko; tapaus "ncm": rsultado_previsao = "Chuva.png"; tauko; tapaus "npm": rsultado_previsao = "Chuva.png"; tauko; tapaus "npp": rsultado_previsao = "Chuva.png"; tauko; case "vn": rsultado_previsao = "Instavel.png"; tauko; tapaus "ct": rsultado_previsao = "Chuva.png"; tauko; tapaus "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; tauko; tapaus "ppt": rsultado_previsao = "Chuva.png"; tauko; tapaus "ppm": rsultado_previsao = "Chuva.png"; tauko;
}
odota this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: this. Max_tit. Text = "Máxima"; this. Min_tit. Teksti = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Kuvat/" + rsultado_previsao));});
}
Vaihe 5: Programação - Exibir Notícias
Nähdäksesi kommentoidaksesi show -uutisia, oi Consulta_noticias envia uma Requireção HTTP for a feed de notícias at BBC, que também retorna um XML. Cinco primeiras notícias são exibidas ja tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = uusi HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Tulos;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = uusi XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList solmut2 = root2. GetElementsByTagName (@"title");
odota tätä. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (nodes2. Item (2). InnerText); this. News2. Text = (solmut2. Item (3). InnerText); this. News3. Text = (solmut2. Item (4). InnerText); this. News4. Text = (solmut2. Item (5). InnerText); this. News5. Text = (solmut2. Item (6). InnerText);
});
}
Vaihe 6: Conclusão
Ao reproduzir esse instructables, será possível realizar detecção de comandos de voz utilizando alguma placa com or Windos IoT Core instalado. Basta criar tai arquivo de gramática com os comandos desejados.
Kirjailija: Egon Patrick Marques Silva
Frederico Clark
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen