Simple Voice Engine Application With Sound Player Class...

Created at : Mar/28/2007   [Click this link to download code sample]
3825 Views   5 Comments

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 !!

Windows form screen shot :

   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";
  28:                          mySoundPlayer.Play();
  29:                          System.Threading.Thread.Sleep(1000);
  30:                          break;
  31:                      case "1":
  32:                          mySoundPlayer.SoundLocation = "1.wav";
  33:                          mySoundPlayer.Play();
  34:                          System.Threading.Thread.Sleep(1000);
  35:                          break;
  36:                      case "2":
  37:                          mySoundPlayer.SoundLocation = "2.wav";
  38:                          mySoundPlayer.Play();
  39:                          System.Threading.Thread.Sleep(1000);
  40:                          break;
  41:                      case "3":
  42:                          mySoundPlayer.SoundLocation = "3.wav";
  43:                          mySoundPlayer.Play();
  44:                          System.Threading.Thread.Sleep(1000);
  45:                          break;
  46:                      case "4":
  47:                          mySoundPlayer.SoundLocation = "4.wav";
  48:                          mySoundPlayer.Play();
  49:                          System.Threading.Thread.Sleep(1000);
  50:                          break;
  51:                      case "5":
  52:                          mySoundPlayer.SoundLocation = "5.wav";
  53:                          mySoundPlayer.Play();
  54:                          System.Threading.Thread.Sleep(1000);
  55:                          break;
  56:                      case "6":
  57:                          mySoundPlayer.SoundLocation = "6.wav";
  58:                          mySoundPlayer.Play();
  59:                          System.Threading.Thread.Sleep(1000);
  60:                          break;
  61:                      case "7":
  62:                          mySoundPlayer.SoundLocation = "7.wav";
  63:                          mySoundPlayer.Play();
  64:                          System.Threading.Thread.Sleep(1000);
  65:                          break;
  66:                      case "8":
  67:                          mySoundPlayer.SoundLocation = "8.wav";
  68:                          mySoundPlayer.Play();
  69:                          System.Threading.Thread.Sleep(1000);
  70:                          break;
  71:                      case "9":
  72:                          mySoundPlayer.SoundLocation = "9.wav";
  73:                          mySoundPlayer.Play();
  74:                          System.Threading.Thread.Sleep(1000);
  75:                          break;
  76:                  }
  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:  }

 


[Comments]
Hendry Nov/13/2007 12:17:58 :
bisa gak sy dibuatkan software untuk antrian sepeti diatas karena perusahaan tempat sy bekerja lagi membutuhkan sistem antrian yang harganya terjangkau,kira-kira berapa harganya..
Mahmun Ali Dec/20/2008 06:24:47 :
Mas Rully aku baru belajar pemrograman VB tolong donk mas kirim contoh cara penulisan program relasi antar database dan form untuk 1. Input data baru 2. Edit data 3. serta untuk menghapus Trimakasih mas Alimahmun@ymail.com Mahmun@trimitra-baterai.co.id
ARY Jan/10/2009 05:33:09 :
Salam kenal mas Rully..... saya mau nanya niy.....namespace System.Media yang digunakan untuk execute file .wav itu di dapat darimana ya.apa saya harus membuat folder terpisah.Applikasi ini khusus untuk VB6 kan mas.Dan kenap file yang saya download dr atas halaman ini dlm bentuk .cs YA.Knp gak ada dalam bentuk .frm Mas. terima kasih atas bantuannya. fakhryadi_amran@yahoo.com
Rully Jan/10/2009 10:32:22 :
@ARY : Mas ary, contoh artikel ini menggunakan Visual C# 2.0 diatas .NET framework. Kalau mau pake VB harus versi yang .NET nya, yaitu VB.NET versi 2005 ke atas...jadi ini ga bisa dipake untuk VB 6.0.
Bisnis Pulsa Oct/14/2009 12:28:35 :
Artikel sebagus ini kok nggak dikomersilkan saja, thanks banyak Mas ya...

[Write your comment]
Name (required)
URL (optional)
Example : http://www.yulianmf.com  
Comment

5184
Input code above below (Case Sensitif) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 2235 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2192 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 1523 times  
DataGridView Grouping : Downloaded 1243 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1232 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise - IT Training 
Native Enterprise Facebook Group 
My Facebook 
My LinkedIn 
Syndication (RSS 2.0) 
Powered By 
Native Enterprise News