تبدیل متن به گفتار در ویژوال استودیو ۲۰۱۲. سرویس های زیادی تو ویندوز هستند که مایکروسافت تا الان بصورت کاربردی تر از آنها استفاده نکرده، شاید به دلیل اینکه از دید مایکروسافت خیلی هم مهم نبودن یا خیلی ساده بوده اند. اما یکی از مزایای برنامه نویس بودن اینه که هر چی که تو دسترست نیست یا اصلاً وجود نداره رو بتونی اونطوری که دوست داری درستش کنی. و من هم امروز می خوام دقیقاً اونطوری که دوست دارم از یکی از سرویس های ویندوز مایکروسافت استفاده کنم.

این سرویسی که می خوام در موردش صحبت کنم ، سرویس تبدیل متن یا فایل متنی به صداست. برنامه ای به اسم Text To Speech تو کنترل پنل ویندوز وجود داره که وظیفه تبدیل متن به گفتار رو به عهده داره و می تونه متنی رو تلفظ کنه. خیلی از افراد تازه کار هستند که از وجود چنین امکاناتی تو ویندوز خبر ندارن چه برسه به نحوه استفاده از اون.
اگه بخوایم به یکی از مزایای تبدیل متن به گفتار اشاره کنیم همین تلفظ کلمات برای غیر زبان انگلیسی ها می تونه بهترین گزینه باشه. بی اینکه جایی پول بدیم یا فیلم آموزشی نیگا کنیم میشه با این برنامه ای که امروز درست می کنیم یه استاد تلفظ فول تایم برای خودمون استخدام کنیم.

خب بریم سراغ آموزش.

 مرحله ۱

  1. باز کردن نرم افزار ویژوال استودیو ۲۰۱۲
  2. رفتن به مسیر (“File” -> “New” -> “Project”)
  3. انتخاب ( ”Template” -> “Visual C#” -> “Windows Forms Application”)
  4. نام گذاری پروژه (هر اسمی که دوست دارین)

مرحله ۲

در حال حاضر به فرمی مثل فرم زیر نیاز داریم. پس فرمی به شکل زیر طراحی می کنیم:

  1. ۵ کنترل Button
  2. یک کنترل Textbox
  3. یک کنترل OpenFileDialog
  4. یک کنترل Label

مرحله۳

باید کتابخانه این سرویس رو به برناممون اضافه کنیم. برای این کار روی نام پروژه راست کلیک و از منوی باز شده گزینه “System.Speech” رو انتخاب کنیم. (مراحل طبق تصاویر زیر):


مرحله۴

فایل Form1.cs را باز می کنیم و کدهای زیر را در آن قرار می دهیم. (توجه کنین که نام کنترل را با کدها یکی کرده باشین!)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;                                  
using System.Speech.Synthesis ;
using System.IO;

namespace text_to_speech
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            speech = new SpeechSynthesizer();
            Pausespeak.Enabled = false;
            Resumespeak.Enabled = false;
            Stopspeak.Enabled = false;                      
        }
        SpeechSynthesizer speech;
        private void button6_Click(object sender, EventArgs e)
        {
            if (textbox1.Text.Length >0)
            {
                speech = new SpeechSynthesizer();
                speech.SpeakAsync(textbox1.Text);
                label1.Text = "Speaking";
                Pausespeak.Enabled = true;
                Stopspeak.Enabled = true;
                speech.SpeakCompleted += speech_SpeakCompleted;
            }
            else
            {
                MessageBox.Show("Please Enter some text in the textbox", "Message", MessageBoxButtons.OK);
            }
        }

        void speech_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
        {
            label1.Text = "Ideal";
        }
        private void Pausespeak_Click(object sender, EventArgs e)
        {
            if (speech != null)
            {
                if (speech.State == SynthesizerState.Speaking)
                {
                    speech.Pause();
                    label1.Text = "Pause";
                    Resumespeak.Enabled = true;
                }
            }
        }
        private void Resumespeak_Click(object sender, EventArgs e)
        {
            if (speech != null)
            {
                if (speech.State == SynthesizerState.Paused)
                {
                    speech.Resume();
                    label1.Text = "speaking";
                }
                Resumespeak.Enabled = false;
            }
        }

        private void Stopspeak_Click(object sender, EventArgs e)
        {
            if (speech != null)
            {
                speech.Dispose();
                label1.Text = "Idle";
                Pausespeak.Enabled = false;
                Resumespeak.Enabled = false;
                Stopspeak.Enabled = false;
            }
        }
        private void Loadtextfromfile_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
        }
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            textbox1.Text = File.ReadAllText(openFileDialog1.FileName.ToString());
        }      
    }
}

مرحله۵

حالا می تونیم برنامه رو جهت امتحان کردن اجرا کنیم، مراحل تلفظ به اینصورته که متنی رو داخل کنترل جعبه متن اضافه کنیم، این کار رو می تونیم از طریق صفحه کلید یا بارگذاری فایل متنی از طریق کادر OpenFileDialog و در مرحله آخر کلیک کردن روی دکمه speech text انجام بدیم. سورس کد این برنامه رو می تونید از لینک زیر دریافت کنین!

گاهی اوقات کارهای کوچیک می تونن زندگی آدم رو از این رو به اون رو کنن. پس بزرگ فکر کنین!
تا یه آموزش دیگه همتون رو به خدای بزرگ می سپارم. مواظب خودتون باشین.


سورس کد
حجم: 47.6 کیلوبایت