You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ro/6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-spee...

5.0 KiB

Text to speech - Dispozitiv IoT virtual

În această parte a lecției, vei scrie cod pentru a converti textul în vorbire folosind serviciul de vorbire.

Conversia textului în vorbire

SDK-ul serviciilor de vorbire pe care l-ai utilizat în lecția anterioară pentru a converti vorbirea în text poate fi folosit și pentru a converti textul înapoi în vorbire. Când soliciți generarea vorbirii, trebuie să specifici vocea care va fi utilizată, deoarece vorbirea poate fi generată folosind o varietate de voci diferite.

Fiecare limbă acceptă o gamă de voci diferite, iar lista vocilor disponibile pentru fiecare limbă poate fi obținută din SDK-ul serviciilor de vorbire.

Sarcină - conversia textului în vorbire

  1. Deschide proiectul smart-timer în VS Code și asigură-te că mediul virtual este încărcat în terminal.

  2. Importează SpeechSynthesizer din pachetul azure.cognitiveservices.speech adăugându-l la importurile existente:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. Deasupra funcției say, creează o configurație de vorbire pentru a fi utilizată cu sintetizatorul de vorbire:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    Aceasta folosește aceeași cheie API, locație și limbă care au fost utilizate de recunoașterea vocală.

  4. Sub aceasta, adaugă următorul cod pentru a obține o voce și a o seta în configurația de vorbire:

    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
    

    Acest cod recuperează o listă cu toate vocile disponibile, apoi găsește prima voce care se potrivește cu limba utilizată.

    💁 Poți obține lista completă a vocilor acceptate din documentația despre suportul pentru limbi și voci pe Microsoft Docs. Dacă dorești să utilizezi o voce specifică, poți elimina această funcție și seta manual vocea folosind numele vocii din această documentație. De exemplu:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. Actualizează conținutul funcției say pentru a genera SSML pentru răspuns:

    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>'
    
  6. Sub aceasta, oprește recunoașterea vocală, redă SSML-ul, apoi pornește din nou recunoașterea:

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

    Recunoașterea este oprită în timp ce textul este redat pentru a evita ca anunțul despre pornirea cronometrului să fie detectat, trimis către LUIS și interpretat posibil ca o cerere de a seta un nou cronometru.

    💁 Poți testa acest lucru comentând liniile care opresc și repornesc recunoașterea. Setează un cronometru și este posibil să descoperi că anunțul setează un nou cronometru, ceea ce duce la un nou anunț, care setează un alt cronometru, și așa mai departe la nesfârșit!

  7. Rulează aplicația și asigură-te că aplicația funcțională rulează de asemenea. Setează câțiva timpi, iar răspunsurile vorbite vor confirma că cronometrul tău a fost setat, urmate de un alt răspuns vorbit când cronometrul se finalizează.

💁 Poți găsi acest cod în folderul code-spoken-response/virtual-iot-device.

😀 Programul tău pentru cronometru a fost un succes!


Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim să asigurăm acuratețea, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.