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

4.7 KiB

Metinden sese - Sanal IoT cihazı

Bu dersin bu bölümünde, metni sese dönüştürmek için konuşma hizmetini kullanarak kod yazacaksınız.

Metni sese dönüştürme

Bir önceki derste konuşmayı metne dönüştürmek için kullandığınız konuşma hizmetleri SDK'sı, metni tekrar sese dönüştürmek için de kullanılabilir. Ses talep ederken, kullanılacak sesi belirtmeniz gerekir çünkü konuşma, çeşitli farklı sesler kullanılarak oluşturulabilir.

Her dil, farklı seslerden oluşan bir yelpazeyi destekler ve konuşma hizmetleri SDK'sından her dil için desteklenen seslerin listesini alabilirsiniz.

Görev - Metni sese dönüştürme

  1. VS Code'da smart-timer projesini açın ve sanal ortamın terminalde yüklü olduğundan emin olun.

  2. azure.cognitiveservices.speech paketinden SpeechSynthesizer'ı mevcut ithalatlara ekleyerek içe aktarın:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. say fonksiyonunun üstüne, konuşma sentezleyici ile kullanılacak bir konuşma yapılandırması oluşturun:

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

    Bu, tanıyıcı tarafından kullanılan aynı API anahtarını, konumu ve dili kullanır.

  4. Bunun altına, bir ses almak ve konuşma yapılandırmasında ayarlamak için aşağıdaki kodu ekleyin:

    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
    

    Bu, mevcut tüm seslerin bir listesini alır ve ardından kullanılan dile uyan ilk sesi bulur.

    💁 Desteklenen seslerin tam listesini Microsoft Docs'taki Dil ve ses desteği dokümantasyonundan alabilirsiniz. Belirli bir sesi kullanmak istiyorsanız, bu fonksiyonu kaldırabilir ve bu dokümantasyondan ses adını sabit kodlayabilirsiniz. Örneğin:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. say fonksiyonunun içeriğini, yanıt için SSML oluşturacak şekilde güncelleyin:

    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. Bunun altına, konuşma tanımayı durdurun, SSML'i konuşun ve ardından tanımayı tekrar başlatın:

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

    Metin konuşulurken, zamanlayıcının başlatıldığının duyurulmasının algılanmasını, LUIS'e gönderilmesini ve muhtemelen yeni bir zamanlayıcı ayarı olarak yorumlanmasını önlemek için tanıma durdurulur.

    💁 Bunu, tanımayı durdurma ve yeniden başlatma satırlarını yorumlayarak test edebilirsiniz. Bir zamanlayıcı ayarlayın ve duyurunun yeni bir zamanlayıcı ayarladığını, bunun yeni bir duyuruya neden olduğunu ve bunun sonsuza kadar devam ettiğini görebilirsiniz!

  7. Uygulamayı çalıştırın ve işlev uygulamasının da çalıştığından emin olun. Bazı zamanlayıcılar ayarlayın ve zamanlayıcınızın ayarlandığını söyleyen bir sesli yanıt, ardından zamanlayıcı tamamlandığında başka bir sesli yanıt duyacaksınız.

💁 Bu kodu code-spoken-response/virtual-iot-device klasöründe bulabilirsiniz.

😀 Zamanlayıcı programınız başarılı oldu!


Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.