آموزش تبدیل text به speak در سی شارپ در #C
سلام بر برنامه نویس های #C …
در این مطلب آموزشی سی شارپ ، یاد می گیرین که چه طور یک متن درون تکست باکس رو به صدا تبدیل کنید . به این صورت که کاربر متن رو درون تکست باکس وارد میکنه و با کلیک کردن بر روی دکمه Speak ، آن متن برای کاربر خوانده می شود. (این برنامه برای متن های انگلیسی است)
خروجی پروژه به این صورت می باشد:
ابتدا سعی کنید فرمتان را مانند تصویر زیر بسازید:
سپس باید رفرنس مربوط به تبدیل متن به صدا را به برنامه اضافه کنید.
ابتدا روی Add Reference کلیک کنید و سپس از تب .NET تیک گزینه ی System.Speech را بزنید و روی OK کلیک کنید.
سپس کد های زیر را برای ساخته شدن برنامه وارد کنید:
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
{
SpeechSynthesizer reader; //declare the object
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
reader = new SpeechSynthesizer(); //create new object
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
textBox1.ScrollBars = ScrollBars.Both;
}
//SPEAK TEXT
private void button1_Click(object sender, EventArgs e)
{
reader.Dispose();
if (textBox1.Text != "") //if text area is not empty
{
reader = new SpeechSynthesizer();
reader.SpeakAsync(textBox1.Text);
label2.Text = "SPEAKING";
button2.Enabled = true;
button4.Enabled = true;
reader.SpeakCompleted += new EventHandler(reader_SpeakCompleted);
}
else
{
MessageBox.Show("Please enter some text in the textbox", "Message", MessageBoxButtons.OK);
}
}
//event handler
void reader_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
label2.Text = "IDLE";
}
//PAUSE
private void button2_Click(object sender, EventArgs e)
{
if (reader != null)
{
if (reader.State == SynthesizerState.Speaking)
{
reader.Pause();
label2.Text = "PAUSED";
button3.Enabled = true;
}
}
}
//RESUME
private void button3_Click(object sender, EventArgs e)
{
if (reader != null)
{
if (reader.State == SynthesizerState.Paused)
{
reader.Resume();
label2.Text = "SPEAKING";
}
button3.Enabled = false;
}
}
//STOP
private void button4_Click(object sender, EventArgs e)
{
if (reader != null)
{
reader.Dispose();
label2.Text = "IDLE";
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
}
//load data from text file button
private void button5_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
//copy data from text file and load it to textbox
textBox1.Text = File.ReadAllText(openFileDialog1.FileName.ToString());
}
}
}
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
{
SpeechSynthesizer reader; //declare the object
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
reader = new SpeechSynthesizer(); //create new object
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
textBox1.ScrollBars = ScrollBars.Both;
}
//SPEAK TEXT
private void button1_Click(object sender, EventArgs e)
{
reader.Dispose();
if (textBox1.Text != "") //if text area is not empty
{
reader = new SpeechSynthesizer();
reader.SpeakAsync(textBox1.Text);
label2.Text = "SPEAKING";
button2.Enabled = true;
button4.Enabled = true;
reader.SpeakCompleted += new EventHandler(reader_SpeakCompleted);
}
else
{
MessageBox.Show("Please enter some text in the textbox", "Message", MessageBoxButtons.OK);
}
}
//event handler
void reader_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
label2.Text = "IDLE";
}
//PAUSE
private void button2_Click(object sender, EventArgs e)
{
if (reader != null)
{
if (reader.State == SynthesizerState.Speaking)
{
reader.Pause();
label2.Text = "PAUSED";
button3.Enabled = true;
}
}
}
//RESUME
private void button3_Click(object sender, EventArgs e)
{
if (reader != null)
{
if (reader.State == SynthesizerState.Paused)
{
reader.Resume();
label2.Text = "SPEAKING";
}
button3.Enabled = false;
}
}
//STOP
private void button4_Click(object sender, EventArgs e)
{
if (reader != null)
{
reader.Dispose();
label2.Text = "IDLE";
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
}
//load data from text file button
private void button5_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
//copy data from text file and load it to textbox
textBox1.Text = File.ReadAllText(openFileDialog1.FileName.ToString());
}
}
}
یک 2 نظر
aliali3000
فکر میکنم باید اختصاصی برنامه نویسی کنید.
کاوشگر
سلام و با تشکر از مطالب پرکاربرد شما عزیزان.
من می خواستم از شما بپرسم اگه بخوام که این برنامه بتونه متون فارسی رو هم بخوانه باید چه کار کرد؟