BerandaBlog → Siapa mengatakan apa: memisahkan pembicara dalam transkrip

Siapa mengatakan apa: memisahkan pembicara dalam transkrip

Diterbitkan 2026-08-18 · 5 menit baca

Ini pertanyaan paling umum tentang transkripsi sekaligus yang jawabannya paling kurang memuaskan: satu rekaman campuran kembali sebagai satu aliran teks, tanpa label. Kabar baiknya, di sebagian besar situasi nyata Anda tetap bisa mendapatkan pemisahannya — biasanya dengan mengubah cara merekam, bukan cara mentranskrip.

Apa yang dilakukan API dan apa yang tidak

Jawaban lugas, supaya tidak ada yang dibangun di atas asumsi keliru: endpoint transkripsi mengembalikan teks dan segmen bertanda waktu. Ia tidak mengembalikan label pembicara, dan tidak ada parameter yang menyalakannya.

Diarisasi — menentukan ada berapa orang yang berbicara dan siapa mengucapkan kalimat mana — adalah tugas yang terpisah dari pengenalan. Ia benar-benar sulit pada ucapan yang tumpang tindih, suara yang mirip, dan ruangan berisik, dan yang mengerjakannya adalah model yang berbeda.

Jadi pertanyaan praktisnya bukan «bagaimana menyalakannya», melainkan «bagaimana menata segalanya supaya saya tidak membutuhkannya».

Cara 1: rekam tiap pembicara terpisah

Pilihan terbaik dengan selisih lebar, dan yang termurah — biayanya hanya satu keputusan yang diambil sebelum merekam.

Transkrip tiap berkas sendiri-sendiri dan Anda mendapat pemisahan yang sempurna. Sisipkan berselang-seling menurut stempel waktu untuk menyusun ulang percakapannya:

baris = []
for nama, path in [("Pewawancara", "a.mp3"), ("Narasumber", "b.mp3")]:
    with open(path, "rb") as f:
        r = client.audio.transcriptions.create(
            model="whisper-1", file=f, response_format="verbose_json")
    baris += [(s.start, nama, s.text.strip()) for s in r.segments]

for mulai, nama, teks in sorted(baris):
    print(f"[{int(mulai)//60:02d}:{int(mulai)%60:02d}] {nama}: {teks}")

Cara 2: pisahkan kanal stereo

Kalau rekamannya stereo dengan satu orang per kanal — lazim di telepon dan pada sebagian perekam — pemisahannya sudah ada di dalam berkas:

ffmpeg -i telepon.wav -map_channel 0.0.0 kiri.wav -map_channel 0.0.1 kanan.wav

Lalu transkrip kedua berkasnya dan sisipkan seperti di atas. Periksa dulu bahwa kanalnya memang benar-benar terpisah — putar berkasnya di pemutar dan dengarkan tiap sisi. Berkas stereo dengan kedua suara di kedua kanal tidak mendapat apa pun dari cara ini.

Cara 3: tandai setelahnya

Dalam percakapan dua orang, giliran bicara bergantian secara terduga dan perannya biasanya jelas dari isinya — satu bertanya, satu menjawab. Membaca satu jam transkrip sambil menambahkan nama hanya memakan beberapa menit.

Model bahasa bisa membuat draf penandaannya dari teks, tetapi perlakukan hasilnya sebagai draf: ia menyimpulkan dari pilihan kata, jadi ia akan salah menandai — dengan penuh percaya diri — bagian tempat kedua orang saling menyetujui. Periksa secara sampling terhadap penanda waktu sebelum menerbitkan apa pun.

Cara 4: model diarisasi tersendiri

Kalau Anda memang butuh penandaan otomatis pada audio campuran — korpus riset, arsip kepatuhan, rapat yang tidak Anda kendalikan — jalannya adalah model diarisasi khusus yang menghasilkan giliran bicara bertanda waktu, lalu Anda selaraskan dengan segmen transkripnya.

Biayanya, secara realistis: satu model lagi untuk dijalankan dan dirawat, waktu GPU di atas transkripsi, dan akurasi yang justru menurun tepat di tempat Anda paling membutuhkannya — pada ucapan tumpang tindih dan sela pendek. Ini proyek tersendiri, bukan sebuah parameter.

Sebelum memulainya, periksa apakah cara 1 sampai 3 sudah menutup kasus Anda. Dalam praktiknya, ketiganya menutup sebagian besar kasus.

Cara mana untuk keadaan apa

KeadaanPendekatan terbaik
Wawancara yang Anda atur sendiriDua perekam, satu per orang
Panggilan penjualan atau dukunganRekaman per sisi di platform telepon
Rapat Zoom yang Anda tuan rumahiBerkas audio terpisah per peserta
Rekaman stereo, satu suara per kanalPisahkan kanalnya dengan ffmpeg
Percakapan dua orang, berkas campuranTandai manual setelah transkripsi
Arsip besar yang tidak Anda kendalikanModel diarisasi tersendiri

Satu hal lagi yang layak diperiksa sebelum berinvestasi: seberapa sering label pembicara itu benar-benar dipakai orang. Untuk notulen rapat dan pemeriksaan mutu panggilan, keputusannya jauh lebih penting daripada siapa yang mengucapkannya, dan banyak pekerjaan diarisasi akhirnya dibangun untuk kebutuhan yang tidak pernah ada.

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

Bisakah API menandai pembicara secara otomatis?

Tidak. Ia mengembalikan teks dan segmen bertanda waktu; label pembicara adalah tugas terpisah dan tidak ada parameter yang menyalakannya. Jawaban praktisnya adalah merekam peserta secara terpisah.

Cara termudah mendapatkan pemisahannya apa?

Rekam tiap pembicara ke berkas atau kanal terpisah. Mentranskripnya secara mandiri memberi pemisahan yang tepat dan tidak berbiaya apa pun selain menata perekamannya.

Bagaimana menggabungkan jalur terpisah kembali menjadi percakapan?

Minta verbose_json untuk tiap jalur, tandai tiap segmen dengan nama pembicaranya, lalu urutkan seluruh segmen menurut waktu mulai.

Bisakah model bahasa menebak siapa yang bicara?

Ia bisa membuat draf penandaan dari pilihan kata, tetapi ia menyimpulkan alih-alih mengetahui — ia akan salah menandai bagian saat kedua orang mengatakan hal serupa. Perlakukan sebagai draf dan periksa secara sampling terhadap audionya.

Layakkah menjalankan model diarisasi tersendiri?

Hanya untuk arsip yang tidak bisa direkam ulang — korpus riset atau materi kepatuhan. Artinya satu model lagi, lebih banyak waktu GPU, dan akurasi paling lemah justru pada ucapan yang tumpang tindih.

Bacaan terkait