آموزش تبدیل متن به صدا اندروید
آموزش تبدیل متن به صدا اندروید
اندروید به شما این امکان را می دهد تا متن را به صدا تبدیل کنید. نه تنها می توانید آن را تبدیل کنید، بلکه می توانید متن را به زبان های مختلف صحبت کنید.
اندروید کلاس TextToSpeech را برای این هدف ارائه می دهد. برای استفاده از این کلاس لازم است یک شئ از این کلاس را نمونه گذاری کنید و همچنین شنونده ی init را مشخص کنید. به صورت زیر.
private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
}
}
);
در این شنونده باید ویژگی های مربوط به شئ ، از قبیل زبان، زیر و بمی صدا و غیره، را مشخص کنید. زبان به وسیله ی فراخوانی متد setLanguage()تنظیم می شود، که ترکیب آن در زیر ارائه شده است.
ttobj.setLanguage(Locale.UK);
متد setLanguage یک شئ Locale را به عنوان پارامتر می گیرد. لیست برخی از این مکان ها در جدول زیر آمده اند.
- امریکا
-
کانادا - فرانسه
-
آلمان
-
ایتالیا
-
ژاپن
-
چین
زمانی که شما زبان را تنظیم کردید، می توانید متد speak از کلاس را فراخوانده و متن را صحبت کنید. ترکیب آن مانند زیر می باشد.
ttobj.speak(toSpeak,TextToSpeech.QUEUE_FLUSH,null);
علاوه بر متد speak، متد های دیگری در کلاس TextToSpeech وجود دارند که در جدول زیر ارائه شده اند.
-
addSpeech(String text, String filename)
این متد یک نگاشت(mapping) بین یک رشته از متن و فایل صدا قرار می دهد.
-
getLanguage()
این متد یک نمونه lacale را برمیگرداند که زبان را توصیف می کند.
-
isSpeaking()
این متد بررسی می کند که آیا موتور TextToSpeech اشغال می باشد یا نه.
-
setPitch(float pitch)
این متد زیر و بمی صدا را برای موتور TextToSpeech تنظیم می کند.
-
setSpeechRate(float speechRate)
این متد سرعت صحبت را تنظیم می کند.
-
shutdown()
این متد منابع استفاده شده توسط TextToSpeech را آزاد می کند.
-
stop()
این متد صحبت را متوقف می کند.
مثال
مثال زیر استفاده از TextToSpeech را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا متن نوشتاری را تنظیم کرده و آن را صحبت کنید.
برای انجام این مثال لازم است آن را روی یک دستگاه واقعی اجرا کنید.
-
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان TextToSpeech به عنوان بسته ی com.PRG.texttospeech نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.
-
فایل MainActivity.java را برای افزودن کد TextToSpeech تغییر دهید.
-
فایل activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI به آن اضافه کنید.
-
برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید، برنامه را روی آن نصب کرده و نتایج را بررسی کنید.
در اینجا محتوای MainActivity.java آمده است.
package com.PRG.texttospeech;
import android.app.Activity;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.List;
import java.util.Locale;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.widget.Toast;
public class MainActivity extends Activity {
TextToSpeech t1;
EditText ed1;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1=(EditText)findViewById(R.id.editText);
b1=(Button)findViewById(R.id.button);
t1=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
t1.setLanguage(Locale.UK);
}
}
});
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String toSpeak = ed1.getText().toString();
Toast.makeText(getApplicationContext(), toSpeak,Toast.LENGTH_SHORT).show();
t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
}
});
}
public void onPause(){
if(t1 !=null){
t1.stop();
t1.shutdown();
}
super.onPause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
در اینجا محتوای activity_main.xml می باشد.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:transitionGroup="true">
<TextView android:text="Text to Speech" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:theme="@style/Base.TextAppearance.AppCompat" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageView"
android:layout_marginTop="46dp"
android:hint="Enter Text"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ff7aff10"
android:textColorHint="#ffff23d1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text to Speech"
android:id="@+id/button"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp" />
</RelativeLayout>
در اینجا محتوای Strings.xml می باشد.
<resources>
<string name="app_name">My Application</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
در اینجا محتوای AndroidManifest.xml می باشد.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.PRG.texttospeech" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" >
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
اجازه بدهید برنامه ی TextToSpeech را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید.
موبایل خود را به عنوان یک گزینه انتخاب کنید.
در قسمت بعد متنی را در فیلد تایپ کنید و روی دکمه ی Text to Speech در زیر آن کلیک کنید. یک پیام ظاهر خواهد شد و متن به پیغام صوتی تبدیل می شود.
- نوشته شده توسط سعید نوشادی
- بازدید: 5118