Panggil Pasien Poli Pake Voice AI, Bisa Gak Sih?

Panggil Pasien Poli Pake Voice AI, Bisa Gak Sih?

Sobat IT RS, pernah nggak ngerasa jengah sama suara "mbak-mbak" atau "mas-mas" panggilan antrian di poli yang itu-itu aja? Kadang suaranya cempreng, kadang malah ngadat, kadang staf lupa update, pasien jadi nunggu kelamaan. Pernah juga tiba-tiba speaker mati, antrian mandek. Padahal, panggilan pasien ini vital banget buat kelancaran pelayanan. Sekarang, dengan teknologi Text-to-Speech (TTS) dan Voice AI yang makin canggih, muncul pertanyaan: bisa nggak sih kita otomatisasi panggilan pasien pake suara mirip manusia, tanpa harus rekam satu-satu?

Kita bahas bareng-bareng ya, mulai dari konsep, tools yang udah ada, sampai contoh teknis integrasi dengan antrian SIMRS. Siapa tau, abis baca ini, Sobat IT RS langsung kepikiran proof-of-concept buat demo ke manajemen. Atau minimal, nggak pusing tiap kali ada yang minta fitur fancy biar “rumah sakit kita kekinian”.

Kenapa Panggilan Otomatis itu Bikin Hidup Lebih Gampang?

  • Gak Perlu Rekam Manual: Sistem bisa generate suara real-time, tinggal input nama pasien & poli, langsung dipanggil.
  • Minim Human Error: Operator nggak perlu input data dobel atau salah sebut nama, sistem narik data dari DB langsung.
  • Efisien: Satu server buat semua poli, hemat hardware dan SDM.
  • Kustomisasi Gampang: Bisa pilih suara cowok/cewek, pelafalan nama daerah, atau bahkan bercanda dikit biar suasana nggak tegang.
  • Integrasi SIMRS: Data antrian, status pasien, jadwal dokter, bisa langsung sinkron.

Tantangan Lapangan: Suara AI di Rumah Sakit, Apa Aja Kendalanya?

  • Pelafalan Nama Lokal: Nama pasien di Indonesia, apalagi daerah, suka unik dan kadang susah dieja oleh mesin.
  • Jaringan Internet: Pakai TTS cloud-based butuh koneksi stabil, kalau putus, panggilan antrian ngadat.
  • Privasi & Security: Data pasien harus aman, jangan sampai bocor ke layanan cloud tanpa enkripsi.
  • Perangkat Audio: Speaker di poli kadang kualitasnya “ala kadarnya”, output suara bisa jadi nggak jelas.
  • Regulasi: Ada kebijakan rumah sakit soal penggunaan data pasien ke layanan pihak ketiga.

Apa Saja Pilihan Teknologi Text-to-Speech (TTS) yang Bisa Dipakai?

1. Cloud Based: Google, AWS, Azure

  • Google Cloud TTS: Bahasa Indonesia, suara cewek/cowok, pengucapan cukup natural.
  • Amazon Polly: Ada suara bahasa Indonesia juga, cukup banyak opsi voice.
  • Microsoft Azure TTS: Pilihan suara lebih variatif dan bisa custom voice.

Contoh request ke Google Cloud TTS (pakai curl):


curl -H "Authorization: Bearer [YOUR_API_TOKEN]" \
  -H "Content-Type: application/json" \
  --data '{
    "input": {"text": "Nomor antrian dua puluh lima, atas nama Budi Santoso, silakan menuju Poli Umum"},
    "voice": {"languageCode": "id-ID", "name": "id-ID-Standard-C"},
    "audioConfig": {"audioEncoding": "MP3"}
  }' \
  "https://texttospeech.googleapis.com/v1/text:synthesize"

Respons balik berupa file MP3, siap diputar di speaker antrian.

2. Open Source / On-Premise: eSpeak, Festival, Coqui TTS

  • eSpeak: Kecil, ringan, bahasa Indonesia ada, tapi suara robot banget.
  • Festival: Bisa training voice sendiri, lebih ribet setup-nya.
  • Coqui TTS: Model deep learning, bisa training suara mirip manusia, support Bahasa Indonesia (butuh resource server agak tinggi).

Contoh pakai eSpeak di Linux untuk suara bahasa Indonesia:


espeak -v id "Nomor antrian dua puluh lima, atas nama Budi Santoso, silakan menuju Poli Umum" --stdout | aplay

Suara bakal keluar langsung lewat speaker, tapi ya gitu…robotik, lumayan buat prototipe atau poli yang nggak rewel soal kualitas suara.

Integrasi TTS ke Sistem Antrian SIMRS: Gampang-Gampang Susah

Sebagian besar SIMRS udah punya modul antrian. Biasanya, workflow-nya kayak gini:

  • Petugas daftar pasien di meja pendaftaran, antrian masuk ke DB.
  • Saat pasien dipanggil, sistem update status antrian (misal: "dipanggil").
  • Operator klik tombol "Panggil", suara keluar di speaker.

TTS masuk di step nomor 3, ganti file suara manual jadi generate otomatis.

Contoh Struktur Tabel Antrian Pasien


CREATE TABLE antrian_poli (
  id SERIAL PRIMARY KEY,
  nomor_antrian VARCHAR(10),
  nama_pasien VARCHAR(100),
  poli VARCHAR(50),
  status VARCHAR(20), -- waiting, dipanggil, selesai
  waktu_daftar TIMESTAMP,
  waktu_panggil TIMESTAMP
);

Query Ambil Antrian Siap Dipanggil


SELECT *
FROM antrian_poli
WHERE status = 'waiting'
ORDER BY waktu_daftar ASC
LIMIT 1;

Begitu pasien siap dipanggil, sistem bisa generate text panggilan:


"Nomor antrian {nomor_antrian}, atas nama {nama_pasien}, silakan menuju {poli}"

String ini dilempar ke TTS engine, hasil MP3/WAV diputar lewat speaker.

Studi Kasus: Integrasi TTS di Antrian Poli Lokal (Linux + Python + Google TTS)

  • SIMRS pakai PostgreSQL, aplikasi antrian berbasis web (PHP atau Python Flask/Django).
  • Worker background (Python) polling data antrian dari DB tiap 5 detik, cek status waiting.
  • Begitu ada antrian ready, ambil data, tembak ke Google TTS, simpan file suara lokal.
  • Play file suara pakai mpg123/aplay, update status jadi "dipanggil".

Contoh snippet Python sederhana pakai Google TTS dan pydub (tanpa error handling biar ringkas):


import requests
import psycopg2
from pydub import AudioSegment
from pydub.playback import play

conn = psycopg2.connect("dbname=simrs user=simrs password=xxx host=localhost")
cur = conn.cursor()
cur.execute("SELECT id, nomor_antrian, nama_pasien, poli FROM antrian_poli WHERE status='waiting' ORDER BY waktu_daftar ASC LIMIT 1")
row = cur.fetchone()
if row:
    text = f"Nomor antrian {row[1]}, atas nama {row[2]}, silakan menuju {row[3]}"
    payload = {
        "input": {"text": text},
        "voice": {"languageCode": "id-ID", "name": "id-ID-Standard-C"},
        "audioConfig": {"audioEncoding": "MP3"}
    }
    headers = {"Authorization": "Bearer [YOUR_API_TOKEN]"}
    r = requests.post("https://texttospeech.googleapis.com/v1/text:synthesize", json=payload, headers=headers)
    mp3_data = r.json()["audioContent"]
    with open("output.mp3", "wb") as f:
        f.write(base64.b64decode(mp3_data))
    sound = AudioSegment.from_mp3("output.mp3")
    play(sound)
    cur.execute("UPDATE antrian_poli SET status='dipanggil', waktu_panggil=NOW() WHERE id=%s", (row[0],))
    conn.commit()

Kode bisa dijalankan sebagai daemon atau cronjob. Kalau mau lebih real-time, bisa integrasi ke event di aplikasi web, misal pas tombol "Panggil" ditekan langsung eksekusi proses TTS.

Tips Biar Output Suara Lebih "Manusiawi" dan Jelas

  • Bisa Custom Nama Poli/Instruksi: Text template adjust ke kebutuhan masing-masing poli.
  • Cek dan Edit Pronunciation: Nama pasien yang sering salah ucap bisa ditambah phoneme atau dieja manual, terutama cloud TTS yang support SSML (Speech Synthesis Markup Language).
  • Volume dan Jarak Speaker: Tes langsung di ruang tunggu, karena ruangan gede sama ruangan sempit efeknya beda. Kadang suara AI kejernihan tinggi, tapi speaker buluk malah jadi cempreng.
  • Cache File Suara: Untuk nama pasien yang panjang atau sering, generate file suara sekali, simpan, putar ulang biar nggak boros request ke cloud dan hemat kuota/cloud credit.

Contoh SSML di Google TTS (Penekanan Nama/Instruksi)


{
  "input": {
    "ssml": "<speak>Nomor antrian <break time='500ms'/> dua puluh lima, atas nama <emphasis level='strong'>Budi Santoso</emphasis>, silakan menuju Poli Umum</speak>"
  },
  "voice": {"languageCode": "id-ID", "name": "id-ID-Standard-C"},
  "audioConfig": {"audioEncoding": "MP3"}
}

SSML bikin jeda, intonasi, penekanan tertentu lebih natural. Bisa juga eja nama pakai <phoneme> kalau ada pasien dengan nama "unik".

Risiko & Mitigasi: Jangan Asal Upload Nama Pasien ke Cloud

  • Privasi: Kalau generate suara di cloud, data pasien (nama) keluar dari lingkungan RS. Solusi: Masking nama, atau pakai pseudonim/nomor antrian saja. Alternatif, pakai TTS on-premise (eSpeak, Coqui).
  • Reliabilitas: Kalau cloud API down atau kuota habis, antrian stuck. Solusi: Siapkan fallback suara default atau cache file suara yang sering muncul.
  • Biaya: TTS cloud gratisan ada limit harian/bulanan. Kalau pasien poli banyak, bisa jebol quota. Solusi: Hitung kebutuhan, atur prioritas: suara otomatis hanya buat poli besar, lainnya manual.

Proof-of-Concept Lokal: Minimalis, Modal Laptop Bekas + Speaker

  • Install Linux, Python, eSpeak.
  • Buat script polling DB antrian, generate text, play ke speaker.
  • Speaker mini, taruh di meja poli, kabel audio secukupnya.
  • Cost: Murah, ga ribet maintenance, kalau rusak tinggal ganti hardware.

Testing: Bisa simulasi dengan dummy data, misal


INSERT INTO antrian_poli (nomor_antrian, nama_pasien, poli, status, waktu_daftar)
VALUES ('025', 'Budi Santoso', 'Poli Umum', 'waiting', NOW());

Roadmap: Kalau Mau Lebih Advance

  • Custom Voice Rumah Sakit: Rekam suara asli (dokter/pegawai), training model TTS sendiri (Coqui, Azure Custom Voice). Biaya & resource gede, hasilnya lebih personal.
  • Kendali Lewat Mobile App: Notifikasi antrian/panggilan langsung ke HP pasien via push notification, bukan suara doang.
  • Integrasi ke Display Antrian: Sinkron suara dengan running text/LED display, biar pasien yang tuli atau jauh tetap dapat info.
  • Analitik Antrian: Hitung waktu tunggu, statistik pasien, deteksi “bottle neck”. Bisa dikaitkan dengan kepuasan layanan.

Kesimpulan Versi Sobat IT RS (Bukan AI!)

Panggil pasien pake Voice AI? Sangat bisa. Tinggal pilih mau cloud atau lokal, cek biaya, cek aturan privasi, sama siapin script penghubung antara SIMRS ke engine TTS.

Mau hasil cepat? Pakai Google TTS, integrasi ke worker Python/PHP, output ke speaker di poli. Mau irit? eSpeak/Festival, modal suara robot dikit. Mau canggih? Training custom voice, integrasi ke mobile, sync ke display.

Intinya, panggilan pasien otomatis itu bukan barang mimpi lagi. Tinggal eksekusi, sesuaikan dengan anggaran dan regulasi RS. Kalau Sobat IT RS pernah eksperimen atau bahkan udah implementasi, share juga dong ke MinTIRS, biar makin rame diskusi solusi IT RS yang bener-bener ngaruh ke pelayanan!