Daftar Isi:
- Langkah 1: Perangkat Keras
- Langkah 2:
- Langkah 3: Programação - Detecção De Voz
- Langkah 4: Programação - Exibir Previsão Do Tempo
- Langkah 5: Programação - Exibir Notícias
- Langkah 6: Kesimpulan
Video: Espelho Mágico: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Neste Instructables como criar um protótipo de um espelho inteligente que projeta informações de clima dan notícias, utilizando comandos de voz.
Embora seja o projeto de um espelho, não houve como utilizar um devido a contratempos.
Langkah 1: Perangkat Keras
Papan naga 410c
Papan Mezanin Audio
Langkah 2:
Para programação foi utilizado o Visual Studio Community 2017, dan bahasa c#. Sebuah antarmuka gráfica foi feita utilizando atau editor XAML melakukan Visual Studio.
Langkah 3: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. Tempat Audio Mezzanine Board já possui dois microfones integrados, que foram utilizados para a detecção. Tidak ada Visual Studio, gunakan biblioteca Windows. Media. SpeechRecognition untuk dekodificar a 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. Globalisasi. Language("en-US"); Pengenal SpeechRecognizer = SpeechRecognizer baru(idioma); recognitionr. StateChanged += RecognizerStateChanged; pengenal. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string namafile = String. Format(SRGS_FILE); StorageFile grammarContentFile = menunggu Package. Current. InstalledLocation. GetFileAsync(namafile); SpeechRecognitionGrammarFileConstraint grammarConstraint = baru SpeechRecognitionGrammarFileConstraint(grammarContentFile); pengenal. Constraints. Add(tata bahasaConstraint); SpeechRecognitionCompilationResult kompilasiResult = menunggu pengenal. CompileConstraintsAsync(); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) { Debug. WriteLine("Hasil: " + kompilasiResult. ToString()); menunggu pengenal. ContinuousRecognitionSession. StartAsync(); } else { Debug. WriteLine("Status: " + kompilasiResult. Status); } }
Após iniciar o reconhecimento, o método RecognizerResultGenerated recebe os comandos que foram interpretados dan compara com os comandos com os que estão configurados em um arquivo xml que foi criado dan 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 forecast (previsão) e news (notícias).
private async void RecognizerResultGenerated(SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Periksa tag yang berbeda dan inisialisasi variabel
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(): "";
Perangkat string = args. Result. SemanticInterpretation. Properties. ContainsKey("device") ?
args. Result. SemanticInterpretation. Properties["device"][0]. ToString(): "";
// Pertama periksa perangkat mana yang dirujuk pengguna
if (cmd. Equals("tampilkan"))
{
if (device. Equals("forecast")) { Consulta_previsao(); } else if (device. Equals("news")) { Consulta_noticias(); } else { //Debug. WriteLine("Perangkat Tidak Dikenal"); }
} else if (cmd. Equals("sembunyikan"))
{
if (device. Equals("forecast")) { //Tempo. Text = ""; wait this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // Ini sekarang berfungsi, karena berjalan di utas UI: 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")) { menunggu this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // Ini sekarang berfungsi, karena berjalan di utas UI: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = ""; }); } else { // Debug. WriteLine("Perangkat Tidak Dikenal"); } } else { //Debug. WriteLine("Perintah Tidak Diketahui"); }
}
Langkah 4: Programação - Exibir Previsão Do Tempo
Se o comando de voz detectado untuk prakiraan acara, o método Consulta_previsao envia uma requisição HTTP ao situs CPTEC lakukan 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 temperatureas máxima e mínima.
async pribadi batal Consulta_previsao() {
HttpClient httpcliente = baru
//HttpResponseMessage resp = httpcliente. GetAsync("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Hasil; var resp = httpcliente. GetAsync("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Hasil; resp. EnsureSuccessStatusCode(); var respbody = resp. Content. ReadAsStringAsync(); XmlDocument previsao = new XmlDocument();
previsao. LoadXml(respbody. Result);
Akar XmlElement = previsao. DocumentElement;
Node XmlNodeList = root. GetElementsByTagName("tempo");
string prevtempo = (nodes. Item(0). InnerText);
string prevtempo1 = (nodes. Item(1). InnerText); string prevtempo2 = (nodes. Item(2). InnerText); string prevtempo3 = (nodes. Item(3). InnerText); node = root. GetElementsByTagName("minima"); string tempmin = (nodes. Item(0). InnerText); node = root. GetElementsByTagName("maxima"); string tempmax = (nodes. Item(0). InnerText);
string rsultado_previsao = "";
beralih (prevtempo)
{ kasus "ec": rsultado_previsao = "Chuvas_Isoladas.png"; merusak; case "ci": rsultado_previsao = "Chuvas_Isoladas.png"; merusak; kasus "c": rsultado_previsao = "Chuva.png"; merusak; case "dalam": rsultado_previsao = "Instavel.png"; merusak; case "pp": rsultado_previsao = "Chuva.png"; merusak; huruf "cm": rsultado_previsao = "Chuva.png"; merusak; case "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; merusak; case "pt": rsultado_previsao = "Chuva.png"; merusak; case "pm": rsultado_previsao = "Chuvas_Isoladas.png"; merusak; case "np": rsultado_previsao = "Chuva.png"; merusak; kasus "pc": rsultado_previsao = "Chuva.png"; merusak; case "pn": rsultado_previsao = "Nublado.png"; merusak; kasus "cv": rsultado_previsao = "Chuva.png"; merusak; kasus "ch": rsultado_previsao = "Chuva.png"; merusak; case "t": rsultado_previsao = "Tempestade.png"; merusak; case "ps": rsultado_previsao = "Sol.png"; merusak; case "e": rsultado_previsao = "Sol_Encoberto.png"; merusak; case "n": rsultado_previsao = "Nublado.png"; merusak; case "cl": rsultado_previsao = "Sol.png"; merusak; kasus "nv": rsultado_previsao = "Nevoeiro.png"; merusak; case "g": rsultado_previsao = "Neve.png"; merusak; case "ne": rsultado_previsao = "Neve.png"; merusak; case "nd": rsultado_previsao = "na.png"; merusak; case "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; merusak; case "psc": rsultado_previsao = "Chuva.png"; merusak; kasus "pcm": rsultado_previsao = "Chuva.png"; merusak; case "pct": rsultado_previsao = "Chuva.png"; merusak; kasus "pcn": rsultado_previsao = "Chuva.png"; merusak; kasus "npt": rsultado_previsao = "Chuva.png"; merusak; case "npn": rsultado_previsao = "Chuva.png"; merusak; case "ncn": rsultado_previsao = "Chuva.png"; merusak; case "nct": rsultado_previsao = "Chuva.png"; merusak; kasus "ncm": rsultado_previsao = "Chuva.png"; merusak; case "npm": rsultado_previsao = "Chuva.png"; merusak; case "npp": rsultado_previsao = "Chuva.png"; merusak; case "vn": rsultado_previsao = "Instavel.png"; merusak; case "ct": rsultado_previsao = "Chuva.png"; merusak; case "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; merusak; kasus "ppt": rsultado_previsao = "Chuva.png"; merusak; kasus "ppm": rsultado_previsao = "Chuva.png"; merusak;
}
wait this. Dispatcher. RunAsync(Windows. UI. Core. CoreDispatcherPriority. High, () => { // Ini sekarang berfungsi, karena berjalan di utas UI: this. Max_tit. Text = "Máxima"; this. Min_tit. Teks = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage(new Uri("ms-appx:/// Gambar/" + rsultado_previsao)); });
}
Langkah 5: Programação - Exibir Notícias
Se o comando detectado untuk berita acara, o método Consulta_noticias envia uma requisição HTTP ao feed de notícias da BBC, que também retorna um XML. Sebagai cinco primeiras notícias são exibidas na tela em blok teks.
async pribadi batal Consulta_noticias() {
HttpClient httpcliente2 = HttpClient baru();
var resp2 =
resp2. EnsureSuccessStatusCode(); var respbody2 = resp2. Content. ReadAsStringAsync(); Pemberitahuan XmlDocument = new XmlDocument();
noticia. LoadXml(respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList node2 = root2. GetElementsByTagName(@"title");
tunggu ini. 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);
});
}
Langkah 6: Kesimpulan
Untuk mereproduksi instruksi, será possível realizar detecção de voz utilizando alguma placa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.
Penulis: Egon Patrick Marques Silva
Frederico Clark
Direkomendasikan:
Sistem Peringatan Parkir Terbalik Mobil Arduino - Langkah demi Langkah: 4 Langkah
Sistem Peringatan Parkir Mundur Mobil Arduino | Langkah demi Langkah: Pada proyek kali ini, saya akan merancang Rangkaian Sensor Parkir Mundur Mobil Arduino sederhana menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem peringatan mundur mobil berbasis Arduino ini dapat digunakan untuk Navigasi Otonom, Jarak Robot, dan r
Langkah demi Langkah Membangun PC: 9 Langkah
Langkah demi Langkah Membangun PC: Perlengkapan: Perangkat Keras: MotherboardCPU & Pendingin CPUPSU (Unit catu daya)Penyimpanan (HDD/SSD)RAMGPU (tidak diperlukan)Kasing Alat: Obeng Gelang ESD/pasta matstermal dengan aplikator
Tiga Sirkuit Loudspeaker -- Tutorial Langkah-demi-Langkah: 3 Langkah
Tiga Sirkuit Loudspeaker || Tutorial Langkah-demi-Langkah: Sirkuit Loudspeaker memperkuat sinyal audio yang diterima dari lingkungan ke MIC dan mengirimkannya ke Speaker dari mana audio yang diperkuat diproduksi. Di sini, saya akan menunjukkan kepada Anda tiga cara berbeda untuk membuat Sirkuit Loudspeaker ini menggunakan:
Pendidikan Langkah demi Langkah dalam Robotika Dengan Kit: 6 Langkah
Pendidikan Selangkah demi Selangkah dalam Robotika Dengan Kit: Setelah beberapa bulan membuat robot saya sendiri (silakan lihat semua ini), dan setelah dua kali mengalami bagian yang gagal, saya memutuskan untuk mengambil langkah mundur dan memikirkan kembali strategi dan arahan. Pengalaman beberapa bulan terkadang sangat bermanfaat, dan
Levitasi Akustik Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): 8 Langkah
Akustik Levitation Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): transduser suara ultrasonik L298N Dc female adapter power supply dengan pin dc laki-laki Arduino UNOBreadboardCara kerjanya: Pertama, Anda mengunggah kode ke Arduino Uno (ini adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk mengonversi kode (C++)