Beranda → Blog → Siapa mengatakan apa: memisahkan pembicara dalam transkrip
Siapa mengatakan apa: memisahkan pembicara dalam transkrip
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.
- Panggilan video. Zoom bisa merekam tiap peserta ke berkas audio sendiri. Teams dan Meet tidak bisa, tetapi perangkat pesertanya sendiri bisa.
- Wawancara tatap muka. Dua ponsel, satu di dekat masing-masing orang, dimulai bersamaan.
- Sistem telepon. Sebagian besar platform bisa merekam kedua sisi panggilan terpisah — ini pilihan konfigurasi, bukan keterbatasan.
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
| Keadaan | Pendekatan terbaik |
|---|---|
| Wawancara yang Anda atur sendiri | Dua perekam, satu per orang |
| Panggilan penjualan atau dukungan | Rekaman per sisi di platform telepon |
| Rapat Zoom yang Anda tuan rumahi | Berkas audio terpisah per peserta |
| Rekaman stereo, satu suara per kanal | Pisahkan kanalnya dengan ffmpeg |
| Percakapan dua orang, berkas campuran | Tandai manual setelah transkripsi |
| Arsip besar yang tidak Anda kendalikan | Model 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 gratisPertanyaan 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
- Cara mentranskrip wawancara tanpa mengetik ulang sendiri — Mengubah rekaman wawancara menjadi teks yang berguna: cara merekam, apa yang harus dilakukan dengan dua suara, penanda waktu untuk kutipan, dan cara memeriksa hasilnya.
- Cara mentranskrip rekaman rapat dan mendapat notulen yang berguna — Ubah rekaman Zoom, Teams, dan Google Meet menjadi teks yang bisa dicari serta notulen terstruktur: di mana berkasnya, cara mentranskrip, dan cara menarik keputusannya.
- Cara mengubah rekaman telepon menjadi teks — Panduan langkah demi langkah mengubah rekaman percakapan telepon menjadi teks lewat API dalam hitungan menit. Lengkap dengan contoh Python, C#, dan daftar galat.