Isi kandungan:
- Langkah 1: Perkakasan
- 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: Kesimpulannya
Video: Espelho Mágico: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Instructables Neste 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.
Langkah 1: Perkakasan
Papan Naga 410c
Papan Mezzanine Audio
Langkah 2:
Sebagai programação juga memanfaatkan Visual Studio Komuniti 2017, e linguagem c #. Antaramuka yang digunakan untuk penyunting XAML do Visual Studio.
Langkah 3: Programação - Detecção De Voz
Wahai primeiro passo, juga trabalhar com a detecção de voz. Papan Audio Mezzanine placa dengan integrasi mikrofon, que foram utilizados para a detecção. Tidak ada Visual Studio, menggunakan biblioteca Windows. Media. SpeechRecognition untuk decodificar a voz.
Foi utilizado o método encontrado aqui para a inicialização da detecção de voz, que é mostrado também abaixo.
async peribadi tidak sah InicializaVoz () {var idioma = Windows. Globalization. Language baru ("en-US"); SpeechRecognizer mengenali = SpeechRecognizer baru (idioma); mengenali. StateChanged + = RecognizerStateChanged; mengenali. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = tunggu Pakej. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = baru SpeechRecognitionGrammarFileConstraint (grammarContentFile); pengecam. Constraints. Add (tatabahasaConstraint); SpeechRecognitionCompilationResult compilationResult = tunggu pengenal. KompilasiConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Hasil:" + kompilasiResult. ToString ()); tunggu pengecam. ContinuousRecognitionSession. StartAsync (); } lain {Debug. WriteLine ("Status:" + compilationResult. Status); }}
Aps 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 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 ramalan (previsão) e news (notícias).
async void RecognizerResultGenerated (sesi SpeechContinuousRecognitionSession, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Periksa teg yang berbeza dan mulakan pemboleh ubah
String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Rentetan cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("peranti")?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Periksa dahulu peranti mana yang dirujuk oleh pengguna
jika (cmd. Equals ("tunjukkan"))
{
jika (device. Equals ("ramalan")) {Consulta_previsao (); } lain jika (device. Equals ("news")) {Consulta_noticias (); } lain {//Debug. WriteLine("Unknown Device "); }
} lain jika (cmd. Equals ("hide"))
{
if (device. Equals ("ramalan")) {//Tempo. Text = ""; tunggu ini. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ini sekarang berfungsi, kerana berjalan di utas UI: this. Max_tit. Text = ""; this. Min_tit. Text = ""; ini. Min. Text = ""; ini. Max. Text = ""; ini. Img_Tempo. Source = baru BitmapImage (Uri baru ("ms-appx: ///Images/blank.png"));
});
}
lain jika (device. Equals ("news")) {tunggu ini. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ini sekarang berfungsi, kerana berjalan di utas UI: ini. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } lain {// Debug. WriteLine ("Peranti Tidak Dikenal"); }} lain {//Debug. WriteLine("Unknown Command "); }
}
Langkah 4: Programação - Exibir Previsão Do Tempo
Se o comando de voz Detectado untuk ramalan pertunjukan, 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. Oleh itu, lakukan semua xml, semua gambaran yang paling baik dan teratur sebagai pilihan yang lebih awal seperti temperaturas mimaxima.
async peribadi tidak sah Consulta_previsao () {
HttpClient httpcliente = HttpClient 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 = XmlDocument baru ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
Nod XmlNodeList = root. GetElementsByTagName ("tempo");
string prevtempo = (node. Iem (0). InnerText);
string prevtempo1 = (node. Iem (1). InnerText); string prevtempo2 = (node. Iem (2). InnerText); string prevtempo3 = (node. Iem (3). InnerText); node = root. GetElementsByTagName ("minima"); rentetan tempmin = (node. Item (0). InnerText); node = root. GetElementsByTagName ("maxima"); rentetan tempmax = (node. Iem (0). InnerText);
rentetan rsultado_previsao = "";
tukar (prevtempo)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; rehat; kes "ci": rsultado_previsao = "Chuvas_Isoladas.png"; rehat; kes "c": rsultado_previsao = "Chuva.png"; rehat; kes "dalam": rsultado_previsao = "Instavel.png"; rehat; kes "pp": rsultado_previsao = "Chuva.png"; rehat; kes "cm": rsultado_previsao = "Chuva.png"; rehat; kes "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; rehat; kes "pt": rsultado_previsao = "Chuva.png"; rehat; kes "pm": rsultado_previsao = "Chuvas_Isoladas.png"; rehat; kes "np": rsultado_previsao = "Chuva.png"; rehat; kes "pc": rsultado_previsao = "Chuva.png"; rehat; kes "pn": rsultado_previsao = "Nublado.png"; rehat; kes "cv": rsultado_previsao = "Chuva.png"; rehat; kes "ch": rsultado_previsao = "Chuva.png"; rehat; kes "t": rsultado_previsao = "Tempestade.png"; rehat; kes "ps": rsultado_previsao = "Sol.png"; rehat; kes "e": rsultado_previsao = "Sol_Encoberto.png"; rehat; kes "n": rsultado_previsao = "Nublado.png"; rehat; kes "cl": rsultado_previsao = "Sol.png"; rehat; kes "nv": rsultado_previsao = "Nevoeiro.png"; rehat; kes "g": rsultado_previsao = "Neve.png"; rehat; kes "ne": rsultado_previsao = "Neve.png"; rehat; kes "nd": rsultado_previsao = "na.png"; rehat; kes "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; rehat; kes "psc": rsultado_previsao = "Chuva.png"; rehat; kes "pcm": rsultado_previsao = "Chuva.png"; rehat; kes "pct": rsultado_previsao = "Chuva.png"; rehat; kes "pcn": rsultado_previsao = "Chuva.png"; rehat; kes "npt": rsultado_previsao = "Chuva.png"; rehat; kes "npn": rsultado_previsao = "Chuva.png"; rehat; kes "ncn": rsultado_previsao = "Chuva.png"; rehat; kes "nct": rsultado_previsao = "Chuva.png"; rehat; kes "ncm": rsultado_previsao = "Chuva.png"; rehat; kes "npm": rsultado_previsao = "Chuva.png"; rehat; kes "npp": rsultado_previsao = "Chuva.png"; rehat; kes "vn": rsultado_previsao = "Instavel.png"; rehat; kes "ct": rsultado_previsao = "Chuva.png"; rehat; kes "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; rehat; kes "ppt": rsultado_previsao = "Chuva.png"; rehat; kes "ppm": rsultado_previsao = "Chuva.png"; rehat;
}
tunggu ini. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ini sekarang berfungsi, kerana berjalan di utas UI: this. Max_tit. Text = "Máxima"; this. Min_tit. Teks = "Mínima"; ini. Min. Text = tempmin + "°"; ini. Max. Text = tempmax + "°"; ini. Img_Tempo. Source = baru BitmapImage (Uri baru ("ms-appx: /// Imej / "+ rsultado_previsao));});
}
Langkah 5: Programação - Exibir Notícias
Se o comando Detectado untuk berita persembahan, o método Consulta_noticias envia uma requisição HTTP ao feed de notícias da BBC, que também retorna um XML. Sebagai sekatan teks cinco primeiras notícias são exibidas na tela em.
async void Consulta_noticias peribadi () {
HttpClient httpcliente2 = HttpClient baru ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Hasil;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); Notis XmlDocument = Dokumen Xml baru ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
Nod XmlNodeList2 = root2. GetElementsByTagName (@ "tajuk");
tunggu ini. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (node2. Iem (2). InnerText); ini. News2. Text = (node2. Iem (3). InnerText); ini. News3. Text = (node2. Iem (4). InnerText); ini. News4. Text = (node2. Iem (5). InnerText); ini. News5. Text = (node2. Iem (6). InnerText);
});
}
Langkah 6: Kesimpulannya
Pengajaran semula karya semula, 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.
Autores: Egon Patrick Marques Silva
Frederico Clark
Disyorkan:
Sistem Makluman Tempat Letak Balik Kereta Arduino - Langkah demi Langkah: 4 Langkah
Sistem Makluman Tempat Letak Balik Kereta Arduino | Langkah demi Langkah: Dalam projek ini, saya akan merancang Litar Sensor Tempat Letak Kereta Berbalik Arduino yang ringkas menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem amaran Car Reverse berasaskan Arduino ini dapat digunakan untuk Navigasi Autonomi, Robot Ranging dan rangkaian lain
Langkah demi Langkah Pembinaan PC: 9 Langkah
Langkah demi Langkah Pembinaan PC: Persediaan: Perkakasan: MotherboardCPU & CPU cooler PSU (Unit bekalan kuasa) Penyimpanan (HDD / SSD) RAMGPU (tidak diperlukan) Alat kes: Pemutar skru Gelang ESD / tampal matsthermal dengan aplikator
Tiga Litar Pembesar Suara -- Tutorial Langkah demi Langkah: 3 Langkah
Tiga Litar Pembesar Suara || Tutorial Langkah-demi-Langkah: Loudspeaker Circuit menguatkan isyarat audio yang diterima dari persekitaran ke MIC dan menghantarnya ke Speaker dari tempat audio diperkuat dihasilkan. Di sini, saya akan menunjukkan kepada anda tiga cara berbeza untuk membuat Loudspeaker Circuit ini menggunakan:
Pendidikan Langkah demi Langkah dalam Robotik Dengan Kit: 6 Langkah
Pendidikan Langkah-demi-Langkah dalam Robotik Dengan Kit: Setelah beberapa bulan membina robot saya sendiri (sila rujuk semua ini), dan setelah dua kali bahagian gagal, saya memutuskan untuk mengambil langkah mundur dan memikirkan semula strategi dan arahan. Pengalaman selama beberapa bulan kadang-kadang sangat bermanfaat, dan
Pengangkatan Akustik Dengan Arduino Uno Langkah demi Langkah (8-langkah): 8 Langkah
Acoustic Levitation With Arduino Uno Step-by Step (8-step): transduser suara ultrasonik L298N Dc power adaptor wanita dengan pin dc lelaki Arduino UNOBreadboardBagaimana ini berfungsi: Pertama, anda memuat naik kod ke Arduino Uno (ia adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk menukar kod (C ++)