Hear2Text

Deşifre oluşturma

Dosyadan ya da bağlantıdan kayıt oluşturma: neleri kabul ediyoruz, hangi sınırlar geçerli.

Kayıt oluşturma

POST /transcriptions tek bir kaynak kabul eder: ya bir file ya da bir url. İkisini de göndermezseniz 422 alırsınız. Her iki alan da, isteğe bağlı language ve title ile birlikte multipart form verisi olarak gönderilebilir; bağlantı gönderiyorsanız JSON da olur.

AlanTürNotlar
filefileSes ya da video, yalnızca multipart olarak. url göndermiyorsanız zorunlu.
urlstringHerkese açık bir http(s) bağlantısı. file göndermiyorsanız zorunlu.
languagestringBir ISO kodu; kabul edilenler GET /languages listesinde. Boş bırakırsanız dili biz buluruz.
titlestringKayda kendi verdiğiniz ad; en çok 255 karakter.

Oluşturma isteklerinde mutlaka bir Idempotency-Key gönderin. Burada iki kez gitmesi hesabınıza mal olan tek istek, oluşturma isteğidir.

Dosyadan

Dosya isteğin gövdesinde gider; bu yüzden HTTP istemcinize geniş bir zaman aşımı tanıyın — yavaş bir hatta büyük bir dosya ne kadar sürüyorsa o kadar sürer. ffmpeg’in okuyabildiği her şeyi alıyoruz: m4a, mp3, wav, flac, ogg, aac, mp4, mov, mkv, webm ve diğerleri.

curl https://heartotext.com/api/public/v1/transcriptions \
  -H "Authorization: Bearer $H2T_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F file=@interview.wav \
  -F title="Interview with Dr Yilmaz" \
  --max-time 1800

Bağlantıdan

Bağlantıyı gönderin, dosyayı biz indirelim: herkese açık video ve ses siteleri, podcast akışlarındaki bölüm dosyaları, düz bir http(s) dosyası. Üç şeyi geri çeviriyoruz:

  • Oynatma listeleri. Tek seferde tek kayıt gönderin; oynatma listesi bağlantısı 422 ile reddedilir.
  • DRM korumalı siteler. İçerik korumasını kırmıyoruz.
  • Özel adresler. Yerel ya da iç ağdaki bir makineye çözülen her adres geri çevrilir. Bunu hem siz gönderdiğinizde hem de indirmeye başlamadan hemen önce bir kez daha kontrol ediyoruz.

İndirilemeyen bir bağlantı, oluşturma isteğinde hata vermez; kayıt açılır ve status: "failed" durumuna gelir. Denemeden bilemeyiz.

Diller

Kaydın dilini bilmiyorsanız language alanını hiç göndermeyin, dili biz tespit ederiz. Biliyorsanız ISO kodunu gönderin: hem daha hızlı olur hem de tespitin yanılabileceği tek durumu ortadan kaldırır — kaydın, ağırlıklı dilinden başka bir dille açılması. GET /languages kabul ettiğimiz bütün kodları listeler.

GET /languages
{ "data": [ { "code": "ar", "name": "Arabic" }, { "code": "de", "name": "German" }, { "code": "en", "name": "English" } ] }

Sınırlar

  • 512 MB — bir yüklemenin üst sınırı. Daha büyük bir dosya 422 ile geri çevrilir; gövde uygulamaya hiç ulaşamayacak kadar büyükse 413 gelir.
  • 6 saat — ücretli bir planda bir kayıt en fazla bu kadar uzun olabilir. GET /me hesabınız için kesin rakamı verir.
  • Bütün kayıtları kapsayan günlük bir süre hakkı ve aynı anda kaç kaydın işlenebileceğine dair bir tavan da var. İkisi de hız sınırları sayfasında yazıyor.

Kayıtları listeleme

GET /transcriptions, bu anahtarın görebildiği kayıtları en yeniden başlayarak döner; limit (en çok 1000), cursor ve isteğe bağlı bir status filtresi alır.

curl "https://heartotext.com/api/public/v1/transcriptions?status=completed&limit=50" \
  -H "Authorization: Bearer $H2T_API_KEY"

Sayfalama her yerde imleçle yapılır, sayfa numarasıyla değil. next_cursor opak bir değerdir: olduğu gibi geri gönderin, kendiniz imleç üretmeye kalkmayın.

Kayıt silme

DELETE /transcriptions/{id} sesi, deşifre metnini ve gömme vektörlerini siler, karşılığında 204 döner. Silme kalıcıdır, geri alınamaz. Henüz bitmemiş, yani sırada bekleyen ya da işlenmekte olan bir kayıt için yanıt 409 transcription_still_processing olur; önce tamamlanmasını ya da başarısız olmasını bekleyin.