سورس خواندن اعداد با صدای فارسی در زبان سی شارپ
در این بخش سورس خواندن اعداد با صدای فارسی را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C# نوشته شده است. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.
توضیحات پروژه
این پروژه که با استفاده از WinForms نوشته شده است یک عدد از کاربر می گیرد و آن را با صدای فارسی برای کاربر می خواند (مانند سیستم های نوبت دهی که در بانک ها و سایر مراکز وجود دارند). ظاهر برنامه شامل یک عدد دکمه (Button) با نام BtnToSpeech و یک عدد فیلد متنی (TextBox) با نام TxtNumber(برای گرفتن عدد از کاربر) است.
نحوه کار برنامه
این برنامه یک عدد از کاربر می گیرد و آن را به متد Initializer کلا NumberToSpeech ارسال می کند. این متد با استفاه از متد GetNumberName معادل فارسی آن عدد را در یک لیست ذخیره می کند. سپس این لیست که شامل معادل فارسی عدد است یه یک لیست پخش برای Player می شود. در نهایت لیست پخش با استفاده از متد Play پخش می شود.
نحوه کار متد GetNumberName
یک عدد به عنوان ورودی می گیرد و به روش بازگشتی معادل فارسی آن را تشخیص می دهد. فرض کنید عدد وارد شده 2142 است. متد GetNumberName ابتدا مقدار “دو” را به لیست اضافه می کند، سپس چون عدد چهار رقمی است، مقدار “هزار” را به لیست اضافه می کند. بعد از آن مقدار “و” اضافه می شود. سپس مقدار “یک” اضافه می شود. بعد از آن چون عدد سه رقمی شده است، مقدار “صد” اضافه می شود و این روش تا آخر ادامه می یابد. در نهایت محتوای لیست برای عدد 2142 به صورت زیر خواهد بود:
- دو
- هزار
- و
- یک
- صد
- و
- چهل
- و
- دو
قسمت های از سورس پروژه
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | using System; using System.Windows.Forms; namespace NumberToSpeech { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// فیلد عدد ورودی را بررسی می کند /// </summary> /// <returns>Boolean</returns> private bool InputValidator() { // طول متن موجود درداخل TxtDigit را بررسی می کند if (TxtNumber.Text.Length > 12) { MessageBox.Show(@"عدد وارد شده باید حداکثر 12 رقم باشد"); return false; } // بررسی می کند که آیا متنی داخل جعبه if (string.IsNullOrEmpty(TxtNumber.Text)) { MessageBox.Show(@"شما باید یک عدد وارد کنید"); return false; } // اگر متن جعبه متنی خالی نباشد و طول آن بیشتر از 12 نباشد، true برمیگرداند. return true; } private void BtnToSpeech_Click(object sender, EventArgs e) { try { if (!InputValidator()) return; NumberToSpeech.Initializer(long.Parse(TxtNumber.Text)); NumberToSpeech.Play(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void TxtNumber_KeyPress(object sender, KeyPressEventArgs e) { // این شرط چیزی که کاربر درون جعبه متنی وارد می کند را بررسی می کند // اگر مقدار وارد شده یک عدد باشد یعنی 0 تا 9 آن را قبول می کند // در غیر این صورت چیزی به متن موجود اضافه نمی شود if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) { e.Handled = true; } } } } |
نکات
- این برنامه با استفاده از نرم افزار ویژوال استودیو نسخه 2015 نوشته شده است.
- برای استفاده از Player ویندوز باید فایل WMPLib.dll را به بخش Reference های پروژه خود اضافه کنید.
- این برنامه فقط می تواند عددی که طول آن حداکثر 12 رقم است را بخواند.
- قسمت های مختلف کد های برنامه با کامنت گذاری فارسی توضیح داده شده است.
سلام آیا امکانش هست که این پروژه رو در بانک هم پیاده سازی کرد؟
شما با مشاهده سورس این پروژه می توانید نحوه تبدیل اعداد به صوت را یادبگیری و در سیستم های نوبت دهی از آن استفاده کنید.
کاش حداقل ویدیو رو با صدا میذاشتید تا میدونستیم واقعا بدرد بخور هست یا نه... این برنامه بدرد نمیخوره که ... شماره رو خیلی بد اعلام میکنه.
سلام...اعلام شماره فقط چن تا فایل صوتیه که قبلا ضبط شده...شما خیلی راحت میتونید با صدای دیگه جایگزین کنید....در مورد صدای فیلم هم حق با شماست اگه با توضیحات بود بهتر بود.
فایلتون بسیار خوب بود و من تونستم برای یه سیستم استفاده کنم و البته با یک سری تغییرات و تغییر ویس دلخواهم و از الگوریتم مناسبی استفاده کردین.ممنونم
سورس عالی بود با دات نت های جدید هم برای سال 2023 سازگاره با خیال راحت بخرید.