BerandaBlog → Galat API transkripsi dan apa artinya sebenarnya

Galat API transkripsi dan apa artinya sebenarnya

Diterbitkan 2026-08-20 · 5 menit baca

Integrasi jarang rusak, dan selalu pada saat yang paling tidak tepat. Kabar baiknya: penyebab galat transkripsi hanya sedikit dan kebanyakan selesai dalam semenit. Berikut urutannya, sekaligus mana yang pantas diulang otomatis.

Tabel kode status

KodeYang terjadiYang harus dilakukan
401Kunci salah, dicabut, atau tidak terkirimPeriksa header Authorization dan kuncinya
400Berkas kosong, rusak, atau bukan audioBuka dengan pemutar, periksa kodeknya
413Berkas melebihi batas ukuranKompres ke opus atau potong
429Kena batas laju atau saldo habisPerlambat, atau isi saldo
502Mesin pengenalan sementara tidak tersediaUlangi setelah jeda

Bentuk galatnya mengikuti pola yang biasa — objek error dengan message dan type — sehingga exception bertipe di SDK tetap bekerja.

401 biasanya soal header

Tiga penyebab umum, berurutan menurut frekuensi:

Pemeriksaan tercepat adalah satu perintah curl — kalau lolos, masalahnya di kode, bukan di akses.

429 punya dua arti

Kode yang sama muncul saat Anda mengirim terlalu cepat dan saat menit berbayar habis. Teks pesannya membedakan keduanya. Kasus pertama diatasi antrean dan batas paralel, kedua dengan mengisi saldo.

Kebiasaan bagus: pantau sisa saldo di area klien dan siapkan pemberitahuan lebih awal, bukan menemukannya di log produksi.

Cara mengulang dengan benar

Yang layak diulang hanya kegagalan sementara: 429, 502, dan putusnya jaringan. 400, 401, dan 413 akan mengembalikan jawaban sama selamanya — itu harus diperbaiki, bukan digempur.

import time
from openai import OpenAI, APIStatusError, APIConnectionError

client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="kunci Anda", max_retries=0)

def transcribe(path, tries=4):
    delay = 2
    for attempt in range(tries):
        try:
            with open(path, "rb") as f:
                return client.audio.transcriptions.create(model="whisper-1", file=f).text
        except APIStatusError as e:
            if e.status_code not in (429, 500, 502, 503):
                raise
        except APIConnectionError:
            pass
        time.sleep(delay)
        delay *= 2
    raise RuntimeError("gagal mentranskrip " + str(path))

Menggandakan jeda lebih penting daripada jumlah percobaan: itu memberi layanan ruang pulih dan menjaga Anda tidak menabrak batas yang sama sedetik kemudian.

Coba dengan rekaman Anda sendiri. Pendaftaran memakan waktu satu menit, dan menit gratisnya cukup untuk menilai kualitasnya.

Ambil kunci API gratis

Pertanyaan yang sering diajukan

Apakah permintaan gagal tetap dihitung?

Tidak. Hanya permintaan yang berhasil diproses yang ditagih; galat tidak memakan menit.

Kenapa 400 muncul pada berkas yang bisa diputar?

Biasanya berkas yang diganti namanya: ekstensinya mp3 tapi isinya wadah lain. Periksa dengan ffprobe lalu enkode ulang bila perlu.

Bagaimana membedakan 429 batas laju dan saldo habis?

Dari pesan di badan jawaban. Sisa saldo dan riwayat pemotongan selalu terlihat di area klien.

Perlukah mengaktifkan coba ulang bawaan SDK?

Umumnya tidak. Logika sendiri lebih aman karena Anda yang menentukan kode mana diulang dan berapa lama menunggu.

Bacaan terkait