Съдържание:
- Стъпка 1: Хардуер
- Стъпка 2:
- Стъпка 3: Програмиране - Detecção De Voz
- Стъпка 4: Програмиране - Exibir Previsão Do Tempo
- Стъпка 5: Програмиране - Exibir Notícias
- Стъпка 6: Заключение
Видео: Espelho Mágico: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Neste Instructables mostramos como criar um protótipo 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.
Стъпка 1: Хардуер
Dragonboard 410c
Аудио мецанин табла
Стъпка 2:
Като програма за използване на Visual Studio Community 2017, езикова c#. Графичен интерфейс за използване на редактор XAML до Visual Studio.
Стъпка 3: Програмиране - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. Аудио мезонинната платка предлага интеграция на микрофони, която се използва за детектиране. Няма Visual Studio, използва библиотека Windows. Media. SpeechRecognition за декодиране на файл.
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 = нов Windows. Globalization. Language ("en-US"); SpeechRecognizer разпознавател = нов SpeechRecognizer (идиома); разпознавател. StateChanged += RecognizerStateChanged; разпознаващ. КонтинуаленРекогниционен сеанс. Резултатиран + +РазпознаващРезултатиран; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = await Package. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = нов SpeechRecognitionGrammarFileConstraint (grammarContentFile); разпознаващ. Ограничения. Добавяне (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = изчакайте разпознаващия. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Резултат:" + compilationResult. ToString ()); изчакайте разпознавач. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Състояние:" + compilationResult. Status); }}
Após 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 insertido 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 прогноза (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Проверете за различни тагове и инициализирайте променливите
Низ target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Низ cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
Низово устройство = args. Result. SemanticInterpretation. Properties. ContainsKey ("устройство")?
args. Result. SemanticInterpretation. Properties ["устройство"] [0]. ToString (): "";
// Първо проверете за кое устройство се отнася потребителят
if (cmd. Equals ("показване"))
{
if (device. Equals ("прогноза")) {Consulta_previsao (); } иначе ако (device. Equals ("новини")) {Consulta_noticias (); } else {//Debug. WriteLine(" Неизвестно устройство "); }
} иначе ако (cmd. Equals ("скрий"))
{
if (device. Equals ("прогноза")) {//Tempo. Text = ""; изчакайте this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Това вече работи, защото работи в нишката на потребителския интерфейс: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = нов BitmapImage (нов Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {изчакайте this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Това вече работи, защото работи в нишката на потребителския интерфейс: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Неизвестно устройство"); }} else {//Debug. WriteLine(" Неизвестна команда "); }
}
Стъпка 4: Програмиране - Exibir Previsão Do Tempo
Вижте командата за откриване на прогноза за шоуто, за метода Consulta_previsao envia uma requisição HTTP на сайт CPTEC до 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 = нов HttpClient ();
// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Резултат; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Резултат; съответно. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = нов XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement корен = previsao. DocumentElement;
XmlNodeList възли = root. GetElementsByTagName ("темпо");
низ prevtempo = (nodes. Item (0). InnerText);
низ prevtempo1 = (nodes. Item (1). InnerText); низ prevtempo2 = (nodes. Item (2). InnerText); низ prevtempo3 = (nodes. Item (3). InnerText); възли = root. GetElementsByTagName ("минимуми"); низ tempmin = (nodes. Item (0). InnerText); възли = root. GetElementsByTagName ("максимуми"); низ tempmax = (nodes. Item (0). InnerText);
низ rsultado_previsao = "";
превключвател (предтемпо)
{случай "ec": rsultado_previsao = "Chuvas_Isoladas.png"; прекъсване; случай "ci": rsultado_previsao = "Chuvas_Isoladas.png"; прекъсване; регистър "c": rsultado_previsao = "Chuva.png"; прекъсване; case "in": rsultado_previsao = "Instavel.png"; прекъсване; случай "pp": rsultado_previsao = "Chuva.png"; прекъсване; регистър "cm": rsultado_previsao = "Chuva.png"; прекъсване; случай "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; прекъсване; регистър "pt": rsultado_previsao = "Chuva.png"; прекъсване; случай "pm": rsultado_previsao = "Chuvas_Isoladas.png"; прекъсване; случай "np": rsultado_previsao = "Chuva.png"; прекъсване; случай "pc": rsultado_previsao = "Chuva.png"; прекъсване; случай "pn": rsultado_previsao = "Nublado.png"; прекъсване; случай "cv": rsultado_previsao = "Chuva.png"; прекъсване; регистър "ch": rsultado_previsao = "Chuva.png"; прекъсване; случай "t": rsultado_previsao = "Tempestade.png"; прекъсване; случай "ps": rsultado_previsao = "Sol.png"; прекъсване; регистър "e": rsultado_previsao = "Sol_Encoberto.png"; прекъсване; регистър "n": rsultado_previsao = "Nublado.png"; прекъсване; случай "cl": rsultado_previsao = "Sol.png"; прекъсване; случай "nv": rsultado_previsao = "Nevoeiro.png"; прекъсване; регистър "g": rsultado_previsao = "Neve.png"; прекъсване; случай "ne": rsultado_previsao = "Neve.png"; прекъсване; случай "nd": rsultado_previsao = "na.png"; прекъсване; случай "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; прекъсване; случай "psc": rsultado_previsao = "Chuva.png"; прекъсване; случай "pcm": rsultado_previsao = "Chuva.png"; прекъсване; случай "pct": rsultado_previsao = "Chuva.png"; прекъсване; случай "pcn": rsultado_previsao = "Chuva.png"; прекъсване; случай "npt": rsultado_previsao = "Chuva.png"; прекъсване; случай "npn": rsultado_previsao = "Chuva.png"; прекъсване; случай "ncn": rsultado_previsao = "Chuva.png"; прекъсване; случай "nct": rsultado_previsao = "Chuva.png"; прекъсване; случай "ncm": rsultado_previsao = "Chuva.png"; прекъсване; случай "npm": rsultado_previsao = "Chuva.png"; прекъсване; случай "npp": rsultado_previsao = "Chuva.png"; прекъсване; случай "vn": rsultado_previsao = "Instavel.png"; прекъсване; регистър "ct": rsultado_previsao = "Chuva.png"; прекъсване; случай "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; прекъсване; случай "ppt": rsultado_previsao = "Chuva.png"; прекъсване; случай "ppm": rsultado_previsao = "Chuva.png"; прекъсване;
}
изчакайте this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Това вече работи, защото работи в нишката на потребителския интерфейс: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = нов BitmapImage (нов Uri ("ms-appx: /// Изображения/" + rsultado_previsao));});
}
Стъпка 5: Програмиране - Exibir Notícias
Вижте командното детектиране за новини от шоуто, или método Consulta_noticias чрез ума за изискване на HTTP или като емисия, която не е известна на BBC, с ремарке за XML. Като cinco primeiras notícias são exibidas na tela em текстови блокове.
private async void Consulta_noticias () {
HttpClient httpcliente2 = нов HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Резултат;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); Noticia XmlDocument = нов XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList nodes2 = root2. GetElementsByTagName (@"заглавие");
изчакайте това. 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);
});
}
Стъпка 6: Заключение
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.
Авторес: Егон Патрик Маркес Силва
Фредерико Кларк
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати