1. Konuşma Modellerinin Genel Bakışı

1.1. OpenAI'nin TTS ve STT Modellerine Giriş

Metinden Sese (TTS) Modeli

OpenAI'nin TTS modeli metin verilerini ses çıktısına dönüştürebilir. Bu süreç, metin analizi, ses sentezi algoritmalarının uygulanması ve ses kalitesinin ayarlanmasını içerir. Bilgisayarın herhangi bir yazılı metni okumasını sağlayarak içeriği daha anlaşılır ve erişilebilir hale getirir. TTS, görme engelli bireyler, sürücüler veya bilgiyi dinleyerek almayı tercih eden herkes için önemli bir teknolojidir.

Sesten Metne (STT) Modeli

TTS'ye karşılık gelen STT modeli, ses bilgisini yazılı metne dönüştürebilir. Orijinal ses girdisini işlerken, STT sistemi önce konuşma tespiti yapar, ardından öznitelik çıkarımını gerçekleştirir. Daha sonra ses sinyalini akustik ve dil modellerini kullanarak kelime dağarcığına eşler, nihayetinde metin çıktısı oluşturur. STT teknolojisi, konuşma tanıma, toplantı transkripti ve gerçek zamanlı altyazı oluşturma senaryolarında yaygın olarak kullanılır.

1.2. Uygulama Senaryoları

  • Blogların sesli okunması
  • Çoklu dilde konuşma üretimi

3. Metinden Sese API'si

3.1. Hızlı Başlangıç

Bu bölümde, basitçe bir API isteği göndererek metni sesli hale getirmenin nasıl gerçekleştirileceğini göstereceğiz.

Curl Kullanarak İstek Gönderme

Curl komut satırı aracını kullanarak ses oluşturmak için şu adımları izleyin:

  1. Sisteminizde curl'ün kurulu olduğundan ve geçerli bir OpenAI API anahtarınızın bulunduğundan emin olun.
  2. Aşağıdaki curl komutunu kullanarak metni sese dönüştürün:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Bugün, insanların sevdiği ürünleri geliştirmek için harika bir gün!",
    "voice": "alloy"
  }' \
  --output speech.mp3

Yukarıdaki komutta, $OPENAI_API_KEY API anahtarınızı temsil eder, input alanı dönüştürmek istediğiniz metni, model alanı kullanılacak ses modelini ve voice parametresi de sesi seçer. Burada, alloy sentetik metal sesini seçiyoruz. Son --output seçeneği, çıktı dosyasının adını ve formatını belirtir.

Python İstemcisi Kullanma

Eğer Python programlama dilini tercih ederseniz, aşağıdaki örnek kodu kullanabilirsiniz:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Bugün, insanların sevdiği ürünleri geliştirmek için harika bir gün!"
)

response.stream_to_file("output.mp3")

Bu kod parçacığında, önce openai kütüphanesini içe aktarıyor ve OpenAI istemcisini oluşturuyoruz. Ardından, istek göndermek için audio.speech.create yöntemini kullanarak modeli, sesi ve dönüştürülecek metni belirtiyoruz. Son olarak, oluşturulan konuşma akışını bir dosyaya kaydetmek için stream_to_file yöntemini kullanıyoruz.

3.2. Ses Kalitesi ve Ses Seçimi

Projeleriniz için doğru ses kalitesi ve ses seçimi yapmak, en iyi kullanıcı deneyimini sağlamak için kritik bir adımdır. API'ımız, ses kalitesi modelleri için tts-1 ve tts-1-hd olmak üzere iki seçenek sunar.

  • tts-1: Düşük gecikme süresi sağlar, gerçek zamanlı uygulamalar için uygun olmakla birlikte, nispeten düşük ses kalitesine sahiptir.
  • tts-1-hd: Yüksek kaliteli ses çıkışı sunar, gerçek zamanlı olmayan yüksek kaliteli konuşma üretim ihtiyaçları için uygun.

Ayrıca, OpenAI'nin TTS API'si çeşitli ses seçenekleri sunar:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

Proje gereksinimlerine ve hedef kitleye bağlı olarak, en uygun sesi seçmek için farklı ses örneklerini test edebilirsiniz. Konuşma stili, konuşma hızı ve vurgu gibi faktörleri dikkate alarak duyguları uygun şekilde ifade eden ve profesyonelliği yansıtan bir ses seçebilirsiniz.

3.3. Desteklenen Çıkış Formatları ve Diller

OpenAI'nin TTS API'si varsayılan olarak MP3 çıkış formatını kullanır, ayrıca çeşitli diğer ses formatlarını da destekler:

  • Opus: İnternet akışı ve iletişim için uygun, düşük gecikme süresi.
  • AAC: Dijital ses sıkıştırma için kullanılır, YouTube, Android ve iOS gibi platformlar tarafından tercih edilir.
  • FLAC: Ses meraklıları tarafından arşivleme için kullanılan kayıpsız ses sıkıştırma formatı.

Dil desteği açısından, API genellikle Whisper modelini takip eder, birçok ulusal dil için geniş bir dil seçenekleri yelpazesi sunar.

3.4. Gerçek Zamanlı Ses Akışı Fonksiyonalitesi

Gerçek zamanlı uygulama ihtiyaçlarını karşılamak için API'miz gerçek zamanlı ses akışını destekler. Aşağıda gerçek zamanlı ses akışını uygulamak için bir Python örneği bulunmaktadır:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Merhaba dünya! Bu bir akış testidir.",
)

response.stream_to_file("output.mp3")

4. Metinden Sese API

4.1. Hızlı Başlangıç

Bu bölümde, OpenAI'nın metinden sese API'sinin işlevselliğini öncelikle tanıtacağız.

İlk olarak, geçerli bir OpenAI API anahtarınız olmalı ve bir ses dosyası hazırlamalısınız.

curl komutunu kullanarak, ses dosyasını içeren bir POST isteği göndermeniz gerekmektedir. OPENAI_API_KEY kısmını API anahtarınızla değiştirin ve doğru dosya yolunu belirtin.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/dosya/yolunuz/ses/dosyanız.mp3 \
  --form model=whisper-1

Yukarıdaki komutu çalıştırdıktan sonra, transkript edilmiş metin bilgilerini içeren JSON formatında bir yanıt alacaksınız.

Örnek olarak:

{
  "text": "Daha önce hiç akla gelmemiş en vahşi fikri hayal et, ve bunun 100, 1,000 kat daha büyük olabileceği konusunda meraklısın. ..."
}

4.2. Desteklenen Dosya Biçimleri ve Boyutları

Bu API, farklı senaryolardaki farklı ihtiyaçları karşılamak için çeşitli yaygın ses dosyası biçimlerini destekler. Desteklenen dosya biçimleri arasında, ancak bunlarla sınırlı olmamak üzere mp3, mp4, mpeg, mpga, m4a, wav, webm vb. bulunmaktadır. Bu, kullanıcıların çeşitli kaynaklardan ses dosyalarını kolayca işlemesini sağlar.

Dosya boyutu açısından, mevcut API'nin 25MB'ı aşmaması gibi bir sınırlaması bulunmaktadır. Bu, ses dosyanızın 25MB'dan büyük olması durumunda, onu 25MB'dan daha küçük birden fazla segmente bölmek veya daha verimli bir sıkıştırma biçimi kullanmak gerektiği anlamına gelir. Örneğin, mp3 ve opus biçimleri genellikle verimli sıkıştırma sağlayarak dosya boyutunu düşürür ve çok fazla ses kalitesinden ödün vermeden.

25MB'dan büyük bir dosya ile karşılaşırsanız, Python'da sesinizi parçalamak için PyDub kütüphanesini kullanmayı düşünebilirsiniz:

from pydub import AudioSegment

audio_file = AudioSegment.from_file("büyük_ses_dosyanız.mp3")

aralık = 10 * 60 * 1000  # 10 dakika

parçalar = make_chunks(audio_file, aralık)

for i, parça in enumerate(parçalar):
    parça_ismi = f"ses_parça{i}.mp3"
    parça.export(parça_ismi, format="mp3")

Yukarıdaki kodda, make_chunks fonksiyonu büyük bir ses dosyasını 10 dakikalık zaman aralıklarıyla birden fazla ses parçasına bölecektir. Bu parçalar, API tarafından istenen dosya boyut sınırı içinde olacak ve OpenAI API'ya transkript için ayrı ayrı yüklenebilir.

Lütfen unutmayın ki PyDub bize ses dosyalarını işlemenin kolay bir yolunu sağlasa da, kullanırken her zaman üçüncü taraf yazılımların güvenliğine ve istikrarına ekstra dikkat etmeniz önerilir. OpenAI, üçüncü taraf yazılımlar için herhangi bir garanti sağlamamaktadır.