7.7 KiB
Μετατροπή κειμένου σε ομιλία - Εικονική συσκευή IoT
Σε αυτό το μέρος του μαθήματος, θα γράψετε κώδικα για να μετατρέψετε κείμενο σε ομιλία χρησιμοποιώντας την υπηρεσία ομιλίας.
Μετατροπή κειμένου σε ομιλία
Το SDK των υπηρεσιών ομιλίας που χρησιμοποιήσατε στο προηγούμενο μάθημα για τη μετατροπή ομιλίας σε κείμενο μπορεί να χρησιμοποιηθεί για να μετατρέψει το κείμενο πίσω σε ομιλία. Όταν ζητάτε ομιλία, πρέπει να παρέχετε τη φωνή που θα χρησιμοποιηθεί, καθώς η ομιλία μπορεί να παραχθεί χρησιμοποιώντας μια ποικιλία διαφορετικών φωνών.
Κάθε γλώσσα υποστηρίζει μια σειρά από διαφορετικές φωνές, και μπορείτε να λάβετε τη λίστα των υποστηριζόμενων φωνών για κάθε γλώσσα από το SDK των υπηρεσιών ομιλίας.
Εργασία - μετατροπή κειμένου σε ομιλία
-
Ανοίξτε το έργο
smart-timer
στο VS Code και βεβαιωθείτε ότι το εικονικό περιβάλλον είναι φορτωμένο στο τερματικό. -
Εισάγετε το
SpeechSynthesizer
από το πακέτοazure.cognitiveservices.speech
προσθέτοντάς το στις υπάρχουσες εισαγωγές:from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
-
Πάνω από τη συνάρτηση
say
, δημιουργήστε μια διαμόρφωση ομιλίας για χρήση με τον συνθέτη ομιλίας:speech_config = SpeechConfig(subscription=speech_api_key, region=location) speech_config.speech_synthesis_language = language speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
Αυτό χρησιμοποιεί το ίδιο API key, την τοποθεσία και τη γλώσσα που χρησιμοποιήθηκαν από τον αναγνωριστή.
-
Κάτω από αυτό, προσθέστε τον ακόλουθο κώδικα για να λάβετε μια φωνή και να την ορίσετε στη διαμόρφωση ομιλίας:
voices = speech_synthesizer.get_voices_async().get().voices first_voice = next(x for x in voices if x.locale.lower() == language.lower()) speech_config.speech_synthesis_voice_name = first_voice.short_name
Αυτό ανακτά μια λίστα με όλες τις διαθέσιμες φωνές και στη συνέχεια βρίσκει την πρώτη φωνή που ταιριάζει με τη γλώσσα που χρησιμοποιείται.
💁 Μπορείτε να βρείτε την πλήρη λίστα των υποστηριζόμενων φωνών από την τεκμηρίωση υποστήριξης γλώσσας και φωνής στο Microsoft Docs. Εάν θέλετε να χρησιμοποιήσετε μια συγκεκριμένη φωνή, μπορείτε να αφαιρέσετε αυτήν τη συνάρτηση και να ορίσετε τη φωνή απευθείας με το όνομα της φωνής από αυτήν την τεκμηρίωση. Για παράδειγμα:
speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
-
Ενημερώστε το περιεχόμενο της συνάρτησης
say
για να δημιουργήσετε SSML για την απάντηση:ssml = f'<speak version=\'1.0\' xml:lang=\'{language}\'>' ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>' ssml += text ssml += '</voice>' ssml += '</speak>'
-
Κάτω από αυτό, σταματήστε την αναγνώριση ομιλίας, μιλήστε το SSML και στη συνέχεια ξεκινήστε ξανά την αναγνώριση:
recognizer.stop_continuous_recognition() speech_synthesizer.speak_ssml(ssml) recognizer.start_continuous_recognition()
Η αναγνώριση σταματά ενώ το κείμενο εκφωνείται για να αποφευχθεί η ανίχνευση της ανακοίνωσης της έναρξης του χρονομέτρου, η αποστολή της στο LUIS και η πιθανή ερμηνεία της ως αίτημα για ρύθμιση νέου χρονομέτρου.
💁 Μπορείτε να το δοκιμάσετε σχολιάζοντας τις γραμμές για να σταματήσετε και να ξεκινήσετε ξανά την αναγνώριση. Ρυθμίστε ένα χρονομέτρο και ίσως διαπιστώσετε ότι η ανακοίνωση ρυθμίζει ένα νέο χρονομέτρο, το οποίο προκαλεί μια νέα ανακοίνωση, οδηγώντας σε ένα νέο χρονομέτρο, και ούτω καθεξής για πάντα!
-
Εκτελέστε την εφαρμογή και βεβαιωθείτε ότι η λειτουργία της εφαρμογής είναι επίσης ενεργή. Ρυθμίστε μερικά χρονόμετρα και θα ακούσετε μια φωνητική απάντηση που λέει ότι το χρονομέτρό σας έχει ρυθμιστεί, και στη συνέχεια μια άλλη φωνητική απάντηση όταν το χρονομέτρο ολοκληρωθεί.
💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code-spoken-response/virtual-iot-device.
😀 Το πρόγραμμα χρονομέτρου σας ήταν επιτυχές!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.