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
-
VS Code'da
smart-timer
projesini açın ve sanal ortamın terminalde yüklü olduğundan emin olun. -
azure.cognitiveservices.speech
paketindenSpeechSynthesizer
'ı mevcut ithalatlara ekleyerek içe aktarın:from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
-
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.
-
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'
-
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>'
-
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!
-
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.