Spisu treści:
- Krok 1: Sprzęt
- Krok 2:
- Krok 3: Programação - Detecção De Voz
- Krok 4: Programação - Exibir Previsão Do Tempo
- Krok 5: Programação - Exibir Notícias
- Krok 6: Podsumowanie
Wideo: Espelho Mágico: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Neste Instructables pomaga w prowadzeniu inteligentnych projektów inteligentnych informacji o klimacie i informacjach, korzystając z poleceń głosowych.
Embora seja o projeto de um espelho, não houve como utilizar um devido a contratempos.
Krok 1: Sprzęt
Dragonboard 410c
Płyta antresoli audio
Krok 2:
Jako program do obsługi programu Visual Studio Community 2017, a także w języku c#. Graficzny interfejs, który można wykorzystać w edytorze XAML do Visual Studio.
Krok 3: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. A placa Audio Mezzanine Board já possui dois microfones integrados, que foram utilizados para a detecção. Nie Visual Studio, używamy biblioteki Windows. Media. SpeechRecognition do dekodowania i 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"); Aparat rozpoznawania SpeechRecognizer = new SpeechRecognizer(idioma); rozpoznanie. StateChanged += RecognizerStateChanged; rozpoznanie. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format(SRGS_FILE); StorageFile grammarContentFile = czekaj na Package. Current. InstalledLocation. GetFileAsync(fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint(grammarContentFile); rozpoznawanie. Ograniczenia. Add(GrammarConstraint); SpeechRecognitionCompilationResult kompilacjaResult = czekaj na rozpoznanie. CompileConstraintsAsync(); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) { Debug. WriteLine("Wynik: " + compilationResult. ToString()); czekaj na rozpoznanie. ContinuousRecognitionSession. StartAsync(); } else { Debug. WriteLine("Status: " + compilationResult. Status); } }
Após iniciar o reconhecimento, o método RecognizerResultGenerated recebe o poleceniach dotyczących interpretacji i porównań z poleceniami dotyczącymi konfiguracji em um arquivo xml que foi criado e inserido na rozwiązanie.
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 prognoza (previsão) e news (notícias).
private async void RecognizerResultGenerated(SpeechContinuousRecognitionSession sesji, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Sprawdź różne tagi i zainicjuj zmienne
Docelowy ciąg znaków = args. Result. SemanticInterpretation. Properties. ContainsKey("target") ? args. Result. SemanticInterpretation. Properties["target"][0]. ToString(): "";
Ciąg cmd = args. Result. SemanticInterpretation. Properties. ContainsKey("cmd") ?
args. Result. SemanticInterpretation. Properties["cmd"][0]. ToString(): "";
String device = args. Result. SemanticInterpretation. Properties. ContainsKey("urządzenie") ?
args. Result. SemanticInterpretation. Properties["urządzenie"][0]. ToString(): "";
// Najpierw sprawdź, do którego urządzenia odnosi się użytkownik
if (cmd. Equals("pokaż"))
{
if (urządzenie. Equals("prognoza")) { Consulta_previsao(); } else if (device. Equals("wiadomości")) { Consulta_noticias(); } else { //Debug. WriteLine("Nieznane urządzenie"); }
} else if (cmd. Equals("ukryj"))
{
if (device. Equals("prognoza")) { //Tempo. Text = ""; await this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // To teraz działa, ponieważ działa w wątku interfejsu użytkownika: 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")) { await this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // To teraz działa, ponieważ działa w wątku interfejsu użytkownika: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = ""; }); } else { // Debug. WriteLine("Nieznane urządzenie"); } } else { //Debug. WriteLine("Nieznane polecenie"); }
}
Krok 4: Programação - Exibir Previsão Do Tempo
Se o comando de voz detectado dla prognozy pokazu, 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 as temperaturas máxima e mínima.
prywatna async void Consulta_previsao() {
HttpClient httpcliente = new
//HttpResponseMessage odp = 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; ew. ZapewnijSuccessStatusCode(); var respbody = resp. Content. ReadAsStringAsync(); Poprzednia wersja XmlDocument = new XmlDocument();
previsao. LoadXml(odp.body. Wynik);
XmlElement root = previsao. DocumentElement;
Węzły XmlNodeList = root. GetElementsByTagName("tempo");
string prevtempo = (węzły. Item(0). InnerText);
string prevtempo1 = (węzły. Item(1). InnerText); string prevtempo2 = (węzły. Item(2). InnerText); string prevtempo3 = (węzły. Item(3). InnerText); węzły = root. GetElementsByTagName("minima"); string tempmin = (węzły. Item(0). InnerText); węzły = root. GetElementsByTagName("maxima"); string tempmax = (węzły. Item(0). InnerText);
ciąg rsultado_previsao = "";
przełącznik (prevtempo)
{ case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; przerwa; przypadek "ci": rsultado_previsao = "Chuvas_Isoladas.png"; przerwa; przypadek "c": rsultado_previsao = "Chuva.png"; przerwa; case "in": rsultado_previsao = "Instavel.png"; przerwa; wielkość liter "pp": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "cm": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; przerwa; wielkość liter "pt": rsultado_previsao = "Chuva.png"; przerwa; przypadek "pm": rsultado_previsao = "Chuvas_Isoladas.png"; przerwa; przypadek "np": rsultado_previsao = "Chuva.png"; przerwa; case "pc": rsultado_previsao = "Chuva.png"; przerwa; przypadek "pn": rsultado_previsao = "Nublado.png"; przerwa; case "cv": rsultado_previsao = "Chuva.png"; przerwa; case "ch": rsultado_previsao = "Chuva.png"; przerwa; case "t": rsultado_previsao = "Tempestade.png"; przerwa; case "ps": rsultado_previsao = "Sol.png"; przerwa; przypadek "e": rsultado_previsao = "Sol_Encoberto.png"; przerwa; przypadek "n": rsultado_previsao = "Nublado.png"; przerwa; case "cl": rsultado_previsao = "Sol.png"; przerwa; case "nv": rsultado_previsao = "Nevoeiro.png"; przerwa; przypadek "g": rsultado_previsao = "Neve.png"; przerwa; case "ne": rsultado_previsao = "Neve.png"; przerwa; case "nd": rsultado_previsao = "na.png"; przerwa; wielkość liter "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; przerwa; case "psc": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "pcm": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "pct": rsultado_previsao = "Chuva.png"; przerwa; case "pcn": rsultado_previsao = "Chuva.png"; przerwa; przypadek "npt": rsultado_previsao = "Chuva.png"; przerwa; przypadek "npn": rsultado_previsao = "Chuva.png"; przerwa; case "ncn": rsultado_previsao = "Chuva.png"; przerwa; case "nct": rsultado_previsao = "Chuva.png"; przerwa; case "ncm": rsultado_previsao = "Chuva.png"; przerwa; przypadek "npm": rsultado_previsao = "Chuva.png"; przerwa; case "npp": rsultado_previsao = "Chuva.png"; przerwa; case "vn": rsultado_previsao = "Instavel.png"; przerwa; wielkość liter "ct": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; przerwa; case "ppt": rsultado_previsao = "Chuva.png"; przerwa; wielkość liter "ppm": rsultado_previsao = "Chuva.png"; przerwa;
}
await this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // To teraz działa, ponieważ działa w wątku interfejsu użytkownika: this. Max_tit. Text = "Maxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage(new Uri("ms-appx:///) Obrazy/" + rsultado_previsao)); });
}
Krok 5: Programação - Exibir Notícias
Sprawdź komunikaty dotyczące wiadomości z programów, lub metody Consulta_noticias envia uma requisição HTTP, ao feed of notícias BBC, que também retorna um XML. Jako cinco primeiras notícias sao exibidas na tela em textblocks.
private async void Consulta_noticias() {
HttpClient httpcliente2 = nowy
var resp2 =
resp2. EnsureSuccessStatusCode(); var odpbody2 = odp2. Content. ReadAsStringAsync(); Noticia XmlDocument = new XmlDocument();
noticia. LoadXml(respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList nodes2 = root2. GetElementsByTagName(@"tytuł");
czekaj na this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () =>
{ this. News1. Text = (węzły2. Item(2). InnerText); this. News2. Text = (węzły2. Item(3). InnerText); this. News3. Text = (węzły2. Item(4). InnerText); this. News4. Text = (węzły2. Item(5). Tekst wewnętrzny); this. News5. Text = (węzły2. Item(6). Tekst wewnętrzny);
});
}
Krok 6: Podsumowanie
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.
Autorzy: Egon Patrick Marques Silva
Frederico Clark
Zalecana:
Licznik kroków - Micro:Bit: 12 kroków (ze zdjęciami)
Licznik kroków - Micro:Bit: Ten projekt będzie licznikiem kroków. Do pomiaru kroków użyjemy czujnika przyspieszenia wbudowanego w Micro:Bit. Za każdym razem, gdy Micro:Bit się trzęsie, dodamy 2 do licznika i wyświetlimy go na ekranie
Lewitacja akustyczna z Arduino Uno krok po kroku (8 kroków): 8 kroków
Lewitacja akustyczna z Arduino Uno Krok po kroku (8-kroków): ultradźwiękowe przetworniki dźwięku Zasilacz żeński L298N Dc z męskim pinem dc Arduino UNOBreadboardJak to działa: Najpierw wgrywasz kod do Arduino Uno (jest to mikrokontroler wyposażony w cyfrowy oraz porty analogowe do konwersji kodu (C++)
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: 6 kroków
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: W tym samouczku dowiemy się, jak śledzić kroki silnika krokowego na wyświetlaczu OLED. Obejrzyj film demonstracyjny.Kredyt samouczka oryginalnego trafia do użytkownika YouTube „sky4fly”
Bolt - DIY Wireless Charging Night Clock (6 kroków): 6 kroków (ze zdjęciami)
Bolt - DIY Wireless Charging Night Clock (6 kroków): Ładowanie indukcyjne (znane również jako ładowanie bezprzewodowe lub ładowanie bezprzewodowe) to rodzaj bezprzewodowego przesyłania energii. Wykorzystuje indukcję elektromagnetyczną do dostarczania energii elektrycznej do urządzeń przenośnych. Najpopularniejszym zastosowaniem jest stacja ładowania bezprzewodowego Qi
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: 13 kroków (ze zdjęciami)
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: To jest instrukcja demontażu komputera. Większość podstawowych komponentów ma budowę modułową i jest łatwa do usunięcia. Jednak ważne jest, abyś był w tym zorganizowany. Pomoże to uchronić Cię przed utratą części, a także ułatwi ponowny montaż