مشخصات مقاله
-
1927
-
0.0
-
7604
-
0
-
0
آموزش تبدیل متن به گفتار در اندروید
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش تبدیل متن به صدا، اندروید
اندروید به شما این امکان را می دهد تا متن را به صدا تبدیل کنید. نه تنها می توانید آن را تبدیل کنید، بلکه می توانید متن را به زبان های مختلف صحبت کنید.
اندروید گروه 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 (مکان) را به عنوان پارامتر می گیرد. لیست برخی از این مکان ها در جدول زیر آمده اند.
|
ردیف |
منطقه |
|
1 |
امریکا |
|
2 |
کانادا - فرانسه |
|
3 |
آلمان |
|
4 |
ایتالیا |
|
5 |
ژاپن |
|
6 |
چین |
زمانی که شما زبان را تنظیم کردید، می توانید روش speak از گروه را فراخوانده و متن را صحبت کنید. نرکیب آن مانند زیر می باشد.
ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
علاوه بر روش speak، روش های دیگری در گروه TextToSpeech وجود دارند که در جدول زیر ارائه شده اند.
|
ردیف |
متد ها و توضیحات |
|
1 |
addSpeech(String text, String filename) این روش یک نگاشت(mapping) بین یک رشته از متن و فایل صدا قرار می دهد. |
|
2 |
getLanguage() این روش یک نمونه lacale را گزارش می دهد که زبان را توصیف می کند. |
|
3 |
isSpeaking() این روش چک می کند که آیا موتور TextToSpeech اشغال می باشد یا نه. |
|
4 |
setPitch(float pitch) این روش زیر و بمی صدا را برای موتور TextToSpeech تنظیم می کند. |
|
5 |
setSpeechRate(float speechRate) این روش سرعت صحبت را تنظیم می کند. |
|
6 |
shutdown() این روش منابع استفاده شده توسط TextToSpeech را آزاد می کند. |
|
7 |
stop() این روش صحبت را متوقف می کند. |
مثال
مثال زیر استفاده از TextToSpeech را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا متن نوشتاری را تنظیم کرده و آن را صحبت کنید.
برای انجام این مثال لازم است گان را روی یک دستگاه وافعی اجرا کنید.
|
مراحل |
توضیحات |
|
1 |
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان TextToSpeech تحت بسته ی com.example.texttospeech نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید. |
|
2 |
فایل src/MainActivity.java را برای افزودن کد TextToSpeech تغییر دهید. |
|
3 |
لی اوت فایل XML مربوط به res/layout/activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI به آن اضافه کنید. |
|
4 |
فایل res/values/string.xml را تغییر دهید و مولفه های رشته ی لازم را اضافه کنید. |
|
5 |
برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید، برنامه را روی آن نصب کرده و نتایج را بررسی کنید. |
در اینجا محتوای src/com.example.texttospeech/MainActivity.java آمده است.
package com.example.texttospeech;
import java.util.Locale;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
TextToSpeech ttobj;
private EditText write;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
write = (EditText)findViewById(R.id.editText1);
ttobj=new TextToSpeech(getApplicationContext(),
new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR){
ttobj.setLanguage(Locale.UK);
}
}
});
}
@Override
public void onPause(){
if(ttobj !=null){
ttobj.stop();
ttobj.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.main, menu);
return true;
}
public void speakText(View view){
String toSpeak = write.getText().toString();
Toast.makeText(getApplicationContext(), toSpeak,
Toast.LENGTH_SHORT).show();
ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
}
}
در اینجا محتوای 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:paddingbottom="@dimen/activity_vertical_margin"
android:paddingleft="@dimen/activity_horizontal_margin"
android:paddingright="@dimen/activity_horizontal_margin"
android:paddingtop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<button android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignparentbottom="true"
android:layout_alignparentright="true"
android:layout_marginbottom="188dp"
android:layout_marginright="67dp"
android:onclick="speakText"
android:text="@string/text1" />
<edittext android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_centerhorizontal="true"
android:layout_marginbottom="81dp"
android:ems="10">
<requestfocus />
</EditText>
<textview android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignparenttop="true"
android:layout_centerhorizontal="true"
android:layout_margintop="20dp"
android:text="@string/write"
android:textappearance="?android:attr/textAppearanceLarge" />
</relativelayout>
در اینجا محتوای Strings.xml می باشد.
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<string name="app_name">TextToSpeech</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="text1">Text to Speech</string>
<string name="write">Write Text</string>
</resources>
در اینجا محتوای AndroidManifest.xml می باشد.
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.texttospeech"
android:versioncode="1"
android:versionname="1.0">
<uses-sdk android:minsdkversion="8"
android:targetsdkversion="17" />
<application android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name="com.example.texttospeech.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 از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را چک کنیدکه صفحه ی برنامه را نمایش خواهد داد.
اکنون متنی را در فیلد تایپ کرده و روی دکمه ی Text to Speech در زیر آن کلیک کنید. یک پیام ظاهر خواهد شد و متن به پیغام صوتی تبدیل می شود. همانطور که در تصویر زیر می بینید.
اکنون متن دیگری تایپ کرده و مرحله را با یک منطقه ی دیگر تکرار کنید. دوباره صدا را خواهید شنید، همان طور که در تصویر زیر می بینید.
