Sisukord:
- Samm: riistvara
- 2. samm:
- 3. samm: Programação - Detecção De Voz
- Samm 4: Programação - Exibir Previsão Do Tempo
- 5. samm: Programação - Exibir Notícias
- 6. samm: Conclusão
Video: Espelho Mágico: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Neste Instructables Mostramos como criar um protótipo de um espelho inteligente que projeta informationções de clima e notícias, utilizando comandos de voz.
Embora seja o projeto de um espelho, ilma et oleksite saanud kasutada devido ja contratempos.
Samm: riistvara
Dragonboard 410c
Audio Mezzanine Board
2. samm:
Programmi Visual Studio Community 2017 programmide kasutamiseks ja keeleks c#. Graafiline kasutajaliides ja XAML -i redigeerija Visual Studio jaoks.
3. samm: Programação - Detecção De Voz
O primeiro passo, trabalhar com a detecção de voz. Plats Audio Mezzanine Board on integreeritud mikrofonide integreeritud mikrofon, mis on ette nähtud kasutamiseks. No Visual Studio, kasutage Windowsi biblioteeki. Media. SpeechRecognition dekodeerib 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 ("en-US"); SpeechRecognizeri äratundja = new SpeechRecognizer (idioom); tunnistaja. StateChanged += RecognizerStateChanged; tunnistaja. JätkuvRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammatikaContentFile = ootama Package. Current. InstalledLocation. GetFileAsync (failinimi); SpeechRecognitionGrammarFileConstraint grammatikaConstraint = new SpeechRecognitionGrammarFileConstraint (grammatikaSisufail); äratundja. Piirangud. Add (grammatikaPiirang); SpeechRecognitionCompilationResult compilationResult = ootab äratundjat. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); oota äratundja. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Olek:" + compilationResult. Status); }}
Após iniciar o reconhecimento, o 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 prognoos (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Kontrollige erinevaid silte ja lähtestage muutujad
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 seade = args. Result. SemanticInterpretation. Properties. ContainsKey ("seade")?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Esmalt kontrollige, millisele seadmele kasutaja viitab
kui (cmd. Võrdsed ("näita"))
{
if (device. Equals ("prognoos")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Tundmatu seade "); }
} muu if (cmd. Equals ("peida"))
{
if (device. Equals ("prognoos")) {//Tempo. Text = ""; oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: 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"));
});
}
else if (device. Equals ("news")) {wait for this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: see. Uudised1. Tekst = ""; see. Uudised2. Tekst = ""; see. Uudised3. Tekst = ""; see. Uudised4. Tekst = ""; see. Uudised5. Tekst = "";}); } else {// Debug. WriteLine ("Tundmatu seade"); }} else {//Debug. WriteLine("Tundmatu käsk "); }
}
Samm 4: Programação - Exibir Previsão Do Tempo
Näidake prognooside jaoks kommentaare, mis on ette nähtud, 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 as temperaturas máxima e mínima.
private async void Consulta_previsao () {
HttpClient httpcliente = uus 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"). Tulemus; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = uus XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElemendi juur = previsao. DocumentElement;
XmlNodeList sõlmed = root. GetElementsByTagName ("tempo");
string prevtempo = (sõlmed. Item (0). Sisemine tekst);
string prevtempo1 = (sõlmed. Item (1). Sisemine tekst); string prevtempo2 = (sõlmed. Item (2). Sisemine tekst); string prevtempo3 = (sõlmed. Item (3). Sisemine tekst); sõlmed = root. GetElementsByTagName ("miinimumid"); string tempmin = (nodes. Item (0). InnerText); sõlmed = root. GetElementsByTagName ("maxima"); string tempmax = (nodes. Item (0). Sisemine tekst);
string rsultado_previsao = "";
lüliti (eelnev)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; murda; juhtum "ci": rsultado_previsao = "Chuvas_Isoladas.png"; murda; juhtum "c": rsultado_previsao = "Chuva.png"; murda; juhtum "in": rsultado_previsao = "Instavel.png"; murda; juhtum "pp": rsultado_previsao = "Chuva.png"; murda; juhtum "cm": rsultado_previsao = "Chuva.png"; murda; juhtum "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; murda; juhtum "pt": rsultado_previsao = "Chuva.png"; murda; juhtum "pm": rsultado_previsao = "Chuvas_Isoladas.png"; murda; juhtum "np": rsultado_previsao = "Chuva.png"; murda; juhtum "pc": rsultado_previsao = "Chuva.png"; murda; juhtum "pn": rsultado_previsao = "Nublado.png"; murda; juhtum "cv": rsultado_previsao = "Chuva.png"; murda; juhtum "ch": rsultado_previsao = "Chuva.png"; murda; juhtum "t": rsultado_previsao = "Tempestade.png"; murda; juhtum "ps": rsultado_previsao = "Sol.png"; murda; juhtum "e": rsultado_previsao = "Sol_Encoberto.png"; murda; juhtum "n": rsultado_previsao = "Nublado.png"; murda; juhtum "cl": rsultado_previsao = "Sol.png"; murda; juhtum "nv": rsultado_previsao = "Nevoeiro.png"; murda; juhtum "g": rsultado_previsao = "Neve.png"; murda; juhtum "ne": rsultado_previsao = "Neve.png"; murda; juhtum "nd": rsultado_previsao = "na.png"; murda; juhtum "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; murda; juhtum "psc": rsultado_previsao = "Chuva.png"; murda; juhtum "pcm": rsultado_previsao = "Chuva.png"; murda; juhtum "pct": rsultado_previsao = "Chuva.png"; murda; juhtum "pcn": rsultado_previsao = "Chuva.png"; murda; juhtum "npt": rsultado_previsao = "Chuva.png"; murda; juhtum "npn": rsultado_previsao = "Chuva.png"; murda; juhtum "ncn": rsultado_previsao = "Chuva.png"; murda; juhtum "nct": rsultado_previsao = "Chuva.png"; murda; juhtum "ncm": rsultado_previsao = "Chuva.png"; murda; juhtum "npm": rsultado_previsao = "Chuva.png"; murda; juhtum "npp": rsultado_previsao = "Chuva.png"; murda; juhtum "vn": rsultado_previsao = "Instavel.png"; murda; juhtum "ct": rsultado_previsao = "Chuva.png"; murda; juhtum "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; murda; juhtum "ppt": rsultado_previsao = "Chuva.png"; murda; juhtum "ppm": rsultado_previsao = "Chuva.png"; murda;
}
oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: this. Max_tit. Text = "Máxima"; this. Min_tit. Tekst = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Pildid/" + rsultado_previsao));});
}
5. samm: Programação - Exibir Notícias
Vaadake saateuudiste avastamiseks kommentaare, vaadake Consulta_noticias envia uma nõutavat HTTP -d, mis on ette nähtud BBC BBC -le, et saada XML -i. Nagu cinco primeiras notícias são exibidas ja tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = uus HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Tulemus;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = uus XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElementi juur2 = noticia. DocumentElement;
XmlNodeList sõlmed2 = root2. GetElementsByTagName (@"title");
oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (sõlmed2. Item (2). Sisemine tekst); this. News2. Text = (nodes2. Item (3). Sisemine tekst); this. News3. Text = (nodes2. Item (4). Sisemine tekst); this. News4. Text = (nodes2. Item (5). Sisemine tekst); this. News5. Text = (nodes2. Item (6). Sisemine tekst);
});
}
6. samm: 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 või arquivo de gramática com os comandos desejados.
Autorid: Egon Patrick Marques Silva
Frederico Clark
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust