Pernahkah membayangkan bagaimana caranya membuat aplikasi seperti mesin suara antrian di bank? Di artikel ini saya buat aplikasi sederhana mesin suara antrian dengan memanfaatkan SoundPlayer Class yang terdapat di dalam namespace System.Media yang digunakan untuk execute file .wav.
Secara logika sebenarnya sederhana. Kita buat file .wav yang merekam suara manusia untuk masing-masing angka, misalnya file 0.wav yang merekam suara "nol", 1.wav yang merekam suara "satu"...kemudian angka yang muncul di mesin antrian / output yang diambil dari tabel atau file .xml atau file .txt kita baca per karakter, dan per karakter tersebut nantinya di cocokkan dengan file name .wav yang sudah kita buat sebelumnya.
Untuk membuat delay pada detik tertentu kita bisa memanfaatkan Sleep method dari Thread class, sehingga jeda satu suara yang mewakili satu angka tidak terlalu cepat. Aplikasi yang saya buat ini tentu hanya konsep saja, anda bisa mengembangkannya lebih lanjut. Misalnya data antrian terakhir diambil dari datasource tertentu, validasi untuk number yang akan dibaca, maksimum angka yang diperbolehkan, dsb.
Untuk aplikasi ini nomor yang akan dibaca yaitu di input lewat textbox yang hanya bisa menerima unassign integer (angka positif saja) dan maksimum hanya empat karakter (empat angka), input juga hanya boleh angka. File wav yang digunakan di aplikasi ini juga hanya file wav contoh yang diambil dari windows :) yang sudah saya rename berdasarkan urutan angka dan saya simpan di folder bin. Anda bisa merubah lokasi penempatan file wav nya tentunya.
Sudah pasti dalam real application anda harus ganti dengan file wav suara sungguhan yang menyuarakan angka-angkanya. Ok...Here's the code...you can download the code sample from the link above...enjoy it !!
1: using System;
2: using System.Collections.Generic;
3: using System.ComponentModel;
4: using System.Data;
5: using System.Drawing;
6: using System.Text;
7: using System.Windows.Forms;
8: using MyMedia = System.Media;
9:
10: namespace VoiceEngine
11: {
12: public partial class frmVoiceEngine : Form
13: {
14: public frmVoiceEngine()
15: {
16: InitializeComponent();
17: }
18:
19: private void GetWav(string Number)
20: {
21: using (MyMedia.SoundPlayer mySoundPlayer =
22: new MyMedia.SoundPlayer())
23: {
24: switch (Number)
25: {
26: case "0":
27: mySoundPlayer.SoundLocation = "0.wav";
30: break;
31: case "1":
32: mySoundPlayer.SoundLocation = "1.wav";
35: break;
36: case "2":
37: mySoundPlayer.SoundLocation = "2.wav";
40: break;
41: case "3":
42: mySoundPlayer.SoundLocation = "3.wav";
45: break;
46: case "4":
47: mySoundPlayer.SoundLocation = "4.wav";
50: break;
51: case "5":
52: mySoundPlayer.SoundLocation = "5.wav";
55: break;
56: case "6":
57: mySoundPlayer.SoundLocation = "6.wav";
60: break;
61: case "7":
62: mySoundPlayer.SoundLocation = "7.wav";
65: break;
66: case "8":
67: mySoundPlayer.SoundLocation = "8.wav";
70: break;
71: case "9":
72: mySoundPlayer.SoundLocation = "9.wav";
75: break;
76: }
33: mySoundPlayer.Play();
34: System.Threading.Thread.Sleep(1000);
77: }
78: }
79:
80: private void txtNumber_Validating(object sender,
81: CancelEventArgs e)
82: {
83: uint result;
84: if(uint.TryParse(txtNumber.Text,out result) == false)
85: {
86: e.Cancel = true;
87: MessageBox.Show("Enter valid number", "Warning",
88: MessageBoxButtons.OK, MessageBoxIcon.Information);
89: txtNumber.Focus();
90: }
91: }
92:
93: private void btnPlay_Click(object sender, EventArgs e)
94: {
95: this.Enabled = false;
96: foreach (char aChar in txtNumber.Text.ToCharArray())
97: {
98: string aNumber = aChar.ToString();
99: GetWav(aNumber);
100: }
101: this.Enabled = true;
102: }
103:
104: private void btnClose_Click(object sender, EventArgs e)
105: {
106: this.Dispose();
107: }
108:
109: }
110: }