Πίνακας περιεχομένων:
- Βήμα 1: Υλικό
- Βήμα 2:
- Βήμα 3: Programação - Detecção De Voz
- Βήμα 4: Programação - Exibir Previsão Do Tempo
- Βήμα 5: Programação - Exibir Notícias
- Βήμα 6: Συμπέρασμα
Βίντεο: Espelho Mágico: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Neste Instructables mostramo como criar um protótipo de um um espelho inteligente que projeta informações de clima and notícias, utilizando comandos de voz.
Είμαστε έτοιμοι να προχωρήσουμε, και να χρησιμοποιήσουμε και να αντιμετωπίσουμε ένα αντίθετο.
Βήμα 1: Υλικό
Dragonboard 410c
Audio Mezzanine Board
Βήμα 2:
Για ένα πρόγραμμα χρήσης της Visual Studio Community 2017, και μιας γλώσσας c#. Μια διεπαφή για τη χρήση του προγράμματος επεξεργασίας XAML για το Visual Studio.
Βήμα 3: Programação - Detecção De Voz
O Primeiro passo, foi trabalhar com a detecção de voz. Μια πλατφόρμα Audio Mezzanine μπορεί να χρησιμοποιηθεί από μικροφωνικά στοιχεία, για χρήση από τον εντοπισμό. Χωρίς Visual Studio, χρησιμοποιήστε μια βιβλιοθήκη Windows. Media. SpeechRecognition για αποκωδικοποίηση ενός voz.
Χρησιμοποιείστε τη χρήση του μέτρου που συνδέεται με την είσοδο και την ανίχνευσή σας, που είναι πολύ πιο εύκολη.
private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); Αναγνωριστής SpeechRecognizer = νέο SpeechRecognizer (ιδίωμα); αναγνωριστικό. StateChanged += RecognizerStateChanged; αναγνωριστικό. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = αναμονή Package. Current. InstalledLocation. GetFileAsync (όνομα αρχείου); SpeechRecognitionGrammarFileConstraint grammarConstraint = νέο SpeechRecognitionGrammarFileConstraint (grammarContentFile); αναγνωριστής. Περιορισμοί. Προσθήκη (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = αναμένουμε τον αναγνωριστή. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); αναμονή αναγνώρισης. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Κατάσταση:" + compilationResult. Status); }}
Αποκλείστε το reconhecimento, το 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.
Έχουμε τη δυνατότητα να κατανοήσουμε τα ιδιώματα της πορτογαλίας, καθώς και να χρησιμοποιήσουμε για να παρουσιάσουμε (πιο πολύ) και να κρύψουμε (να συνοδεύσουμε) και να παραδεχτούμε την πρόβλεψη (πρόβλεψη) και ειδήσεις (ειδήσεις).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Ελέγξτε για διαφορετικές ετικέτες και προετοιμάστε τις μεταβλητές
String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("στόχος"); args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
String cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd");
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("συσκευή");
args. Result. SemanticInterpretation. Properties ["συσκευή"] [0]. ToString (): "";
// Πρώτα ελέγξτε σε ποια συσκευή αναφέρεται ο χρήστης
εάν (cmd. Equals ("εμφάνιση"))
{
if (device. Equals ("forecast")) {Consulta_previsao (); } else if (device. Equals ("ειδήσεις")) {Consulta_noticias (); } else {//Debug. WriteLine("Άγνωστη συσκευή "); }
} else if (cmd. Equals ("απόκρυψη"))
{
if (device. Equals ("forecast")) {//Tempo. Text = ""; περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό λειτουργεί τώρα, επειδή τρέχει στο νήμα UI: 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 ("ειδήσεις")) {περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό τώρα λειτουργεί, επειδή τρέχει στο νήμα διεπαφής χρήστη: αυτό. 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 και να χρειαστείτε HTTP ή έναν ιστότοπο CPTEC do INPE. Αποφασίζει για τη διαγραφή xml, για την εικόνα που χρησιμοποιείτε για την είσοδό σας σε μια προειδοποίηση και για την εξεύρεση των πιο δημοφιλών θερμοκρασιών.
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"). Αποτελέσματα; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = νέο XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
Κόμβοι XmlNodeList = root. GetElementsByTagName ("tempo");
string prevtempo = (κόμβοι. Στοιχείο (0). InnerText);
string prevtempo1 = (κόμβοι. Στοιχείο (1). InnerText); string prevtempo2 = (κόμβοι. Στοιχείο (2). InnerText); string prevtempo3 = (κόμβοι. Στοιχείο (3). InnerText); κόμβοι = root. GetElementsByTagName ("ελάχιστα"); string tempmin = (κόμβοι. Στοιχείο (0). InnerText); κόμβοι = root. GetElementsByTagName ("μέγιστο"); string tempmax = (κόμβοι. Στοιχείο (0). InnerText);
string rsultado_previsao = "";
διακόπτης (prevtempo)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; Διακοπή; περίπτωση "ci": rsultado_previsao = "Chuvas_Isoladas.png"; Διακοπή; περίπτωση "c": rsultado_previsao = "Chuva.png"; Διακοπή; περίπτωση "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"; Διακοπή;
}
περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό λειτουργεί τώρα, επειδή τρέχει στο νήμα UI: 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 (new Uri ("ms-appx: /// Εικόνες/" + rsultado_previsao));}};
}
Βήμα 5: Programação - Exibir Notícias
Απαιτείται εντοπισμός για ειδήσεις στην εκπομπή, καθώς και συμβουλές Consulta_noticias σε περίπτωση που χρειάζεστε 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/portuguese/rss.xml"). Αποτελεσμα?
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = νέο XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList nodes2 = root2. GetElementsByTagName (@"title");
περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (nodes2. Item (2). InnerText); this. News2. Text = (nodes2. Item (3). InnerText); this. News3. Text = (κόμβοι2. Στοιχείο (4). InnerText); this. News4. Text = (κόμβοι2. Στοιχείο (5). InnerText); this. News5. Text = (nodes2. Item (6). InnerText);
});
}
Βήμα 6: Συμπέρασμα
Μπορείτε επίσης να αναπαραγάγετε οδηγίες, μπορείτε να πραγματοποιήσετε εντοπισμό των υπηρεσιών σας και να χρησιμοποιήσετε την εγκατάσταση του Windos IoT Core. Basta criar o arquivo de gramática com os comandos desejados.
Autores: Egon Patrick Marques Silva
Φρειδερίκο Κλαρκ
Συνιστάται:
Πώς να φτιάξετε 4G LTE Double BiQuade Antenna Εύκολα Βήματα: 3 Βήματα
Πώς να κάνετε εύκολα 4G LTE διπλή κεραία BiQuade Antenna: Τις περισσότερες φορές αντιμετώπισα, δεν έχω καλή ισχύ σήματος στις καθημερινές μου εργασίες. Ετσι. Searchάχνω και δοκιμάζω διάφορους τύπους κεραίας αλλά δεν δουλεύω. Μετά από σπατάλη χρόνου βρήκα μια κεραία που ελπίζω να φτιάξω και να δοκιμάσω, γιατί δεν είναι η βασική αρχή
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: 5 βήματα
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: Το Flick είναι ένας πραγματικά απλός τρόπος δημιουργίας ενός παιχνιδιού, ειδικά κάτι σαν παζλ, οπτικό μυθιστόρημα ή παιχνίδι περιπέτειας
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino - Βήματα βήμα προς βήμα: 4 βήματα
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino | Βήματα βήμα προς βήμα: Σε αυτό το έργο, θα σχεδιάσω ένα απλό κύκλωμα αισθητήρα στάθμευσης αντίστροφης στάθμευσης αυτοκινήτου Arduino χρησιμοποιώντας Arduino UNO και υπερηχητικό αισθητήρα HC-SR04. Αυτό το σύστημα ειδοποίησης αυτοκινήτου με βάση το Arduino μπορεί να χρησιμοποιηθεί για αυτόνομη πλοήγηση, κλίμακα ρομπότ και άλλα εύρη
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: 3 βήματα
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: Σε αυτό το Instructable πρόκειται να πραγματοποιήσουμε ανίχνευση προσώπου στο Raspberry Pi 4 με το Shunya O/S χρησιμοποιώντας τη βιβλιοθήκη Shunyaface. Το Shunyaface είναι μια βιβλιοθήκη αναγνώρισης/ανίχνευσης προσώπου. Το έργο στοχεύει στην επίτευξη της ταχύτερης ταχύτητας ανίχνευσης και αναγνώρισης με
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): 4 βήματα
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): Σε αυτήν την ανάρτηση, έφτιαξα ένα DIY Vanity Mirror με τη βοήθεια των λωρίδων LED. Είναι πραγματικά υπέροχο και πρέπει να τα δοκιμάσετε επίσης