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

4.9 KiB

Przetwarzanie tekstu na mowę - Wirtualne urządzenie IoT

W tej części lekcji napiszesz kod, który przekształca tekst na mowę za pomocą usługi mowy.

Przekształcanie tekstu na mowę

SDK usług mowy, którego używałeś w poprzedniej lekcji do przekształcania mowy na tekst, może być również używane do przekształcania tekstu z powrotem na mowę. Podczas generowania mowy musisz określić głos, który ma być użyty, ponieważ mowę można generować za pomocą różnych głosów.

Każdy język obsługuje różne głosy, a listę obsługiwanych głosów dla każdego języka można uzyskać z SDK usług mowy.

Zadanie - przekształć tekst na mowę

  1. Otwórz projekt smart-timer w VS Code i upewnij się, że w terminalu załadowane jest wirtualne środowisko.

  2. Zaimportuj SpeechSynthesizer z pakietu azure.cognitiveservices.speech, dodając go do istniejących importów:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. Nad funkcją say utwórz konfigurację mowy do użycia z syntezatorem mowy:

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

    Wykorzystuje to ten sam klucz API, lokalizację i język, które były używane przez rozpoznawanie mowy.

  4. Poniżej dodaj następujący kod, aby pobrać głos i ustawić go w konfiguracji mowy:

    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
    

    Kod ten pobiera listę wszystkich dostępnych głosów, a następnie znajduje pierwszy głos, który pasuje do używanego języka.

    💁 Pełną listę obsługiwanych głosów możesz znaleźć w dokumentacji wsparcia językowego i głosowego na Microsoft Docs. Jeśli chcesz użyć konkretnego głosu, możesz usunąć tę funkcję i na stałe wpisać nazwę głosu z tej dokumentacji. Na przykład:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. Zaktualizuj zawartość funkcji say, aby wygenerować SSML dla odpowiedzi:

    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. Poniżej zatrzymaj rozpoznawanie mowy, wygeneruj mowę z SSML, a następnie ponownie uruchom rozpoznawanie:

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

    Rozpoznawanie jest zatrzymywane na czas odtwarzania mowy, aby uniknąć sytuacji, w której ogłoszenie rozpoczęcia timera zostanie wykryte, wysłane do LUIS i potencjalnie zinterpretowane jako prośba o ustawienie nowego timera.

    💁 Możesz to przetestować, komentując linie zatrzymujące i ponownie uruchamiające rozpoznawanie. Ustaw jeden timer, a możesz zauważyć, że ogłoszenie ustawia nowy timer, co powoduje kolejne ogłoszenie, prowadzące do ustawienia nowego timera, i tak dalej w nieskończoność!

  7. Uruchom aplikację i upewnij się, że aplikacja funkcji również działa. Ustaw kilka timerów, a usłyszysz odpowiedź głosową informującą, że timer został ustawiony, a następnie kolejną odpowiedź głosową, gdy timer się zakończy.

💁 Kod ten znajdziesz w folderze code-spoken-response/virtual-iot-device.

😀 Twój program do obsługi timerów zakończył się sukcesem!

Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.