BerandaBlog → Cara merekam suara di browser dan mengubahnya menjadi teks

Cara merekam suara di browser dan mengubahnya menjadi teks

Diterbitkan 2026-08-20 · 5 menit baca

Input suara berguna di tempat mengetik terasa lambat: tiket dukungan dari ponsel, komentar di kolom, mendikte deskripsi panjang. Browser merekam audio dengan antarmuka bawaan, dan transkripsinya satu permintaan lagi — dari server Anda, bukan dari halaman.

Merekam di browser

MediaRecorder bawaan menghasilkan berkas jadi tanpa pustaka apa pun:

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const rec = new MediaRecorder(stream, { mimeType: "audio/webm" });
const chunks = [];

rec.ondataavailable = e => chunks.push(e.data);
rec.onstop = async () => {
  const blob = new Blob(chunks, { type: "audio/webm" });
  const form = new FormData();
  form.append("file", blob, "voice.webm");
  const r = await fetch("/api/transcribe", { method: "POST", body: form });
  document.querySelector("#out").value = (await r.json()).text;
};

rec.start();
setTimeout(() => rec.stop(), 15000);

webm diterima langsung, jadi tidak ada yang perlu dikonversi.

Kenapa kunci tak boleh ada di browser

Mengirim berkas langsung dari halaman memang menggoda, tapi kuncinya lalu tertulis di kode yang bisa dibaca siapa saja. Dalam sejam akan ditemukan, dalam sehari saldonya habis.

Bentuk yang benar adalah lapisan tipis di server Anda: browser mengunggah ke Anda, Anda memeriksa pengguna dan kuotanya, lalu server Anda yang menghubungi API dengan kuncinya.

Lapisan di sisi server

import express from "express";
import multer from "multer";
import OpenAI from "openai";
import { toFile } from "openai/uploads";

const upload = multer({ limits: { fileSize: 25 * 1024 * 1024 } });
const client = new OpenAI({ baseURL: "https://voicesscribe.com/v1", apiKey: process.env.VS_KEY });

express()
  .post("/api/transcribe", upload.single("file"), async (req, res) => {
    const file = await toFile(req.file.buffer, "voice.webm");
    const r = await client.audio.transcriptions.create({ model: "whisper-1", file });
    res.json({ text: r.text });
  })
  .listen(3000);

Di sini pula tempat membatasi durasi rekaman dan jumlah permintaan per pengguna — kalau tidak, bot pertama yang menemukan formulir akan mengubahnya jadi tagihan Anda.

Batasan browser

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 memanggil API langsung dari browser?

Secara teknis bisa, tapi kuncinya terlihat oleh setiap pengunjung. Selalu pasang lapisan di server sendiri.

Perlukah mengonversi webm?

Tidak, formatnya diterima apa adanya. Cukup berikan nama berkas dengan ekstensi yang benar.

Bisakah teks muncul sambil pengguna bicara?

Tidak ada keluaran mengalir: teks kembali setelah pemrosesan. Untuk kesan langsung, potong rekaman jadi bagian pendek dan kirim berurutan.

Bagaimana dengan batas panjangnya?

25 MB per berkas, yang dalam webm berarti berjam-jam ucapan — bukan kendala nyata untuk input suara.

Bacaan terkait