AzureTTS api nasıl kullanılır? c#

Bu yazıda, Microsoft Cognitive Services kullanarak ASP.NET Core tabanlı bir web uygulamasında metin-konuşma (Text-to-Speech) dönüşümü nasıl yapılabileceğini ele alacağız. Örnek kod, kullanıcının metni sesli olarak dinlemesine olanak tanıyan bir HTTP POST metodunu tanımlamaktadır.

Kodun İşlevselliği

  1. Başlangıç Ayarları: İlk olarak, Microsoft Cognitive Services için gerekli olan subscriptionKey ve subscriptionRegion tanımlanmaktadır. Bu bilgiler, hizmete erişim için gereklidir.
  2. SpeechConfig Ayarları: SpeechConfig nesnesi, abonelik anahtarı ve bölge bilgisiyle oluşturulur. Bu ayar, ses sentezi için temel yapılandırmayı içerir.
  3. Cinsiyete Göre Ses Seçimi: Kullanıcıdan alınan cinsiyet bilgisine (gender) bağlı olarak, Türkçe konuşan erkek (tr-TR-AhmetNeural) veya kadın (tr-TR-EmelNeural) ses seçeneği atanmaktadır.
  4. Metin-Konuşma İşlemi: Kullanıcının gönderdiği metin (metin.metin), SpeechSynthesizer nesnesi kullanılarak sesli formata dönüştürülür. Bu işlem SSML (Speech Synthesis Markup Language) formatı kullanılarak yapılır.
  5. Ses Dosyasının Kaydedilmesi: Ses dönüşümü başarıyla tamamlandığında, elde edilen ses verisi (result.AudioData) bir WAV dosyası olarak sunucuda kaydedilir. Dosya adı, GUID (Globally Unique Identifier) kullanılarak benzersiz bir şekilde oluşturulur.
  6. Hata Yönetimi: Eğer ses sentezi işlemi başarısız olursa, hata kayıtlara eklenir ve kullanıcıya bir hata mesajı döndürülür.

Kullanım Senaryoları

Bu sistem, web uygulamalarına sesli yanıt özelliği eklemek için kullanılabilir. Özellikle eğitim, erişilebilirlik veya multimedya içerik üretimi alanlarında faydalı olabilir.

Önemi

Metin-konuşma teknolojisi, uygulamaları daha erişilebilir ve kullanıcı dostu hale getirir. Özellikle görme engelli kullanıcılar için web içeriğinin sesli olarak sunulması büyük önem taşır.

Sonuç

Microsoft Cognitive Services'in metin-konuşma API'si, ASP.NET Core ile kolayca entegre edilebilir ve web uygulamalarına zengin sesli etkileşim özellikleri ekleyebilir. Bu özellik, kullanıcı deneyimini artırırken, uygulamanızın erişilebilirliğini de genişletir.

  [HttpPost]
  public async Task Convert([FromBody] TextToSpeechRequest metin)
  {
      string subscriptionKey = "subscriptionKey";
      string subscriptionRegion = "subscriptionRegion";
      var config = SpeechConfig.FromSubscription(subscriptionKey, subscriptionRegion);
      var config = SpeechConfig.FromSubscription(subscriptionKey, subscriptionRegion);
      if (metin.gender == "Erkek")
      {
          config.SpeechSynthesisVoiceName = "tr-TR-AhmetNeural"; //Ses kodu
      }
      }
      else
      {
          config.SpeechSynthesisVoiceName = "tr-TR-EmelNeural"; //Ses kodu
      }
      string text = metin.metin;
      // use the default speaker as audio output.
      string text = metin.metin;
      // use the default speaker as audio output.
      using (var synthesizer = new Microsoft.CognitiveServices.Speech.SpeechSynthesizer(config))
      {
          var result = await synthesizer.SpeakSsmlAsync($"{text}");
          if (result.Reason == Microsoft.CognitiveServices.Speech.ResultReason.SynthesizingAudioCompleted)
          if (result.Reason == Microsoft.CognitiveServices.Speech.ResultReason.SynthesizingAudioCompleted)
          {
              var audioData = result.AudioData;
              // Save the audio data to a file (adjust the path and file name accordingly)
              // Save the audio data to a file (adjust the path and file name accordingly)
              string fileName = Guid.NewGuid().ToString() + ".wav";
              var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", fileName);
              await System.IO.File.WriteAllBytesAsync(filePath, audioData);
              return Json(fileName);
          }
          }
          else
          {
              _logger.LogError($"Speech synthesis failed. Reason={result.Reason}");
              return BadRequest($"Speech synthesis failed: {result.Reason}");
          }
      }
      }
  }
  private async Task SaveAudioToFile(byte[] audioData, string filePath)
  private async Task SaveAudioToFile(byte[] audioData, string filePath)
  {
      // Ses verisini base64'den çıkar
      // Dosyayı kaydet
      // Dosyayı kaydet
      await System.IO.File.WriteAllBytesAsync(filePath, audioData);
  }
  public class TextToSpeechRequest
  public class TextToSpeechRequest
  {
      public string metin { get; set; }
      public string gender { get; set; }
      
  }
  public class requestData
  public class requestData
  {
      public string model { get; set; }
      public string voice { get; set; }
      public string input { get; set; }
  }
umitakpin4r
Yazılım Geliştirici

Merhaba ben ümit 18 yaşındayım ve yazılım geliştirme ile uğraşıyorum.