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/sl/6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-spee...

4.7 KiB

Pretvorba besedila v govor - Virtualna IoT naprava

V tem delu lekcije boste napisali kodo za pretvorbo besedila v govor z uporabo storitve za govor.

Pretvorba besedila v govor

SDK za storitve govora, ki ste ga uporabili v prejšnji lekciji za pretvorbo govora v besedilo, lahko uporabite tudi za pretvorbo besedila nazaj v govor. Pri zahtevi za govor morate določiti glas, ki ga želite uporabiti, saj je govor mogoče ustvariti z različnimi glasovi.

Vsak jezik podpira različne glasove, seznam podprtih glasov za posamezen jezik pa lahko pridobite iz SDK za storitve govora.

Naloga - pretvorba besedila v govor

  1. Odprite projekt smart-timer v VS Code in se prepričajte, da je virtualno okolje naloženo v terminalu.

  2. Uvozite SpeechSynthesizer iz paketa azure.cognitiveservices.speech tako, da ga dodate obstoječim uvozom:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. Nad funkcijo say ustvarite konfiguracijo za govor, ki jo boste uporabili s sintetizatorjem govora:

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

    To uporablja isti API ključ, lokacijo in jezik, ki jih je uporabljal prepoznavalnik.

  4. Pod to dodajte naslednjo kodo za pridobitev glasu in nastavitev na konfiguracijo govora:

    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
    

    Ta koda pridobi seznam vseh razpoložljivih glasov in nato poišče prvi glas, ki ustreza jeziku, ki se uporablja.

    💁 Celoten seznam podprtih glasov lahko najdete v dokumentaciji o podpori za jezike in glasove na Microsoft Docs. Če želite uporabiti določen glas, lahko to funkcijo odstranite in ročno nastavite glas z imenom glasu iz te dokumentacije. Na primer:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. Posodobite vsebino funkcije say, da generira SSML za odgovor:

    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. Pod tem ustavite prepoznavanje govora, predvajajte SSML in nato ponovno zaženite prepoznavanje:

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

    Prepoznavanje je ustavljeno, medtem ko se besedilo predvaja, da se prepreči, da bi bila napoved začetka časovnika zaznana, poslana v LUIS in morda interpretirana kot zahteva za nastavitev novega časovnika.

    💁 To lahko preizkusite tako, da zakomentirate vrstice za ustavitev in ponovni zagon prepoznavanja. Nastavite en časovnik in morda boste ugotovili, da napoved nastavi nov časovnik, kar povzroči novo napoved, ki vodi do novega časovnika, in tako naprej v neskončnost!

  7. Zaženite aplikacijo in se prepričajte, da funkcijska aplikacija prav tako deluje. Nastavite nekaj časovnikov in slišali boste glasovni odgovor, ki pravi, da je vaš časovnik nastavljen, nato pa še en glasovni odgovor, ko je časovnik zaključen.

💁 To kodo lahko najdete v mapi code-spoken-response/virtual-iot-device.

😀 Vaš program za časovnik je bil uspešen!


Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna napačna razumevanja ali napačne interpretacije, ki bi nastale zaradi uporabe tega prevoda.