Оглавление:
- Шаг 1. Аппаратное обеспечение
- Шаг 2:
- Шаг 3: Programação - Detecção De Voz
- Шаг 4: Programação - Exibir Previsão Do Tempo
- Шаг 5: Programação - Exibir Notícias
- Шаг 6: Заключение
Видео: Эспельо Магико: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11: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: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com Detecção de voz. Плата Audio Mezzanine Board с возможностью интеграции микрофонов, которая используется для детектирования. Нет 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 = new Windows. Globalization. Language ("en-US"); Распознаватель SpeechRecognizer = новый SpeechRecognizer (идиома); распознаватель. StateChanged + = RecognizerStateChanged; распознаватель. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; строка fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = ожидание Package. Current. InstalledLocation. GetFileAsync (имя_файла); SpeechRecognitionGrammarFileConstraint grammarConstraint = новый SpeechRecognitionGrammarFileConstraint (grammarContentFile); распознаватель. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = ожидание распознавателя. CompileConstraintsAsync (); если (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 команд, которые используются для интерпретации и сравнения, для команд, которые являются конфигурацией их архива xml, который используется для критического и инсеридного решения.
Como não no foi Возможные вставки o idioma português, os comandos utilizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado прогноз (previsão) и новости (notícias).
private async void RecognizerResultGenerated (сеанс SpeechContinuousRecognitionSession, аргументы SpeechContinuousRecognitionResultGeneratedEventArgs) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Проверяем наличие разных тегов и инициализируем переменные
Строка target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["цель"] [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 (): "";
// Сначала проверяем, к какому устройству обращается пользователь
если (cmd. Equals ("показать"))
{
если (device. Equals ("прогноз")) {Consulta_previsao (); } else if (device. Equals ("новости")) {Consulta_noticias (); } else {//Debug. WriteLine("Неизвестное устройство "); }
} else if (cmd. Equals ("скрыть"))
{
if (device. Equals ("прогноз")) {//Tempo. Text = ""; await 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 = new BitmapImage (новый Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {await 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: Programação - Exibir Previsão Do Tempo
Эта команда для определения прогноза показа, или метод Consulta_previsao envia Uma Requisição HTTP, или сайт CPTEC do INPE, который возвращает предварительный просмотр темпа в 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 minima.
private async void Consulta_previsao () {
HttpClient httpcliente = новый 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"). Result; соответственноEnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = новый XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = 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 = "";
переключатель (предтемпо)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; перерыв; case «ci»: rsultado_previsao = «Chuvas_Isoladas.png»; перерыв; case «c»: rsultado_previsao = «Chuva.png»; перерыв; case "in": rsultado_previsao = "Instavel.png"; перерыв; case "pp": rsultado_previsao = "Chuva.png"; перерыв; case "cm": rsultado_previsao = "Chuva.png"; перерыв; case «cn»: rsultado_previsao = «Chuvas_Isoladas_Noite.png»; перерыв; case «pt»: rsultado_previsao = «Chuva.png»; перерыв; case "pm": rsultado_previsao = "Chuvas_Isoladas.png"; перерыв; case "np": rsultado_previsao = "Chuva.png"; перерыв; case «pc»: rsultado_previsao = «Chuva.png»; перерыв; case «pn»: rsultado_previsao = «Nublado.png»; перерыв; case "cv": rsultado_previsao = "Chuva.png"; перерыв; case «ch»: rsultado_previsao = «Chuva.png»; перерыв; case «t»: rsultado_previsao = «Tempestade.png»; перерыв; case «ps»: rsultado_previsao = «Sol.png»; перерыв; case «e»: rsultado_previsao = «Sol_Encoberto.png»; перерыв; case "n": rsultado_previsao = "Nublado.png"; перерыв; case «cl»: rsultado_previsao = «Sol.png»; перерыв; case «nv»: rsultado_previsao = «Nevoeiro.png»; перерыв; case «g»: rsultado_previsao = «Neve.png»; перерыв; case "ne": rsultado_previsao = "Neve.png"; перерыв; case "nd": rsultado_previsao = "na.png"; перерыв; case "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; перерыв; case «psc»: rsultado_previsao = «Chuva.png»; перерыв; case «pcm»: rsultado_previsao = «Chuva.png»; перерыв; case «pct»: rsultado_previsao = «Chuva.png»; перерыв; case «pcn»: rsultado_previsao = «Chuva.png»; перерыв; case «npt»: rsultado_previsao = «Chuva.png»; перерыв; case «npn»: rsultado_previsao = «Chuva.png»; перерыв; case «ncn»: rsultado_previsao = «Chuva.png»; перерыв; case «nct»: rsultado_previsao = «Chuva.png»; перерыв; case «ncm»: rsultado_previsao = «Chuva.png»; перерыв; case "npm": rsultado_previsao = "Chuva.png"; перерыв; case «npp»: rsultado_previsao = «Chuva.png»; перерыв; case «vn»: rsultado_previsao = «Instavel.png»; перерыв; case «ct»: rsultado_previsao = «Chuva.png»; перерыв; case «ppn»: rsultado_previsao = «Chuvas_Isoladas_Noite.png»; перерыв; case "ppt": rsultado_previsao = "Chuva.png"; перерыв; case "ppm": rsultado_previsao = "Chuva.png"; перерыв;
}
await 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 = new BitmapImage (новый Uri ("ms-appx: /// Images / "+ rsultado_previsao));});
}
Шаг 5: Programação - Exibir Notícias
Эта команда обнаруживает новости шоу, метод Consulta_noticias envia Uma Requisição HTTP и поток новостей BBC, который возвращается в XML. Как cinco primeiras notícias são exibidas na tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = новый HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portugintage/rss.xml"). Result;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = новый XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList nodes2 = root2. GetElementsByTagName (@ "title");
ждать this. 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: Заключение
Кроме того, можно воспроизвести инструкции, которые можно использовать для обнаружения команд, которые используются для установки Windows IoT Core. Basta criar o arquivo de gramática com os comandos desejados.
Авторес: Эгон Патрик Маркес Сильва
Фредерико Кларк
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Играйте в Doom на своем IPod за 5 простых шагов !: 5 шагов
Играйте в Doom на своем IPod за 5 простых шагов!: Пошаговое руководство по двойной загрузке Rockbox на iPod, чтобы играть в Doom и десятки других игр. Это действительно легко сделать, но многие люди до сих пор удивляются, когда видят, как я играю дум на своем iPod, и путаются с инструкциями
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)