تبدیل متن به گفتار در اندروید
تبدیل متن به گفتار در اندروید
در اندروید امکان تبدیل متن به گفتار وجود دارد و شما میتوانید اینکار را با TextToSpeech انجام دهید.در این پست به اموزش راحت و خلاصه این مبحث میپردازیمو
خب ابتدا TextToSpeech را تعریف میکنیم:
1 | TextToSpeech t1; |
این کار را به شکل سراسری انجام دهید.
سپس کد اصلی خودمان را مینویسیم:
1 2 3 4 5 6 7 8 | t1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status != TextToSpeech.ERROR) { t1.setLanguage(Locale.UK); } } }); |
خب همانطور که میبینید از رویداد OnInitListener استفاده کردیم و نکته ای که در اینجا قابل ذکر است قسمت t1.setLanguage(Locale.UK); است .این قسمت از کد زبان گفتار برناممان را مشخص میکند.
شما میتوانید از زبان های زیر برای اینکار استفاده کنیم که بجای UK در کدمان میزاریم:
US
CANADA_FRENCH
GERMANY
ITALY
JAPAN
CHINA
خب حالا لازم است برای ادامه و کامل کردن برناممان یک سری ویو اضافه کنیم که به شکل زیر باشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/liner" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> |
خب مشخص است که یک کادر برای ورود متن و یک دکمه برای انجام کار اضافه کردیم.
در رویداد دکمه کد های زیر را مینویسیم:
1 2 3 4 5 6 7 8 | 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); } }); |
خب چیزی که در اینجا مهم است قطعه کد t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null); می باشد که شما میتواید از موارد زیر هم استفاده کنید:
stop():برای توقف خواندن و صحبت.
shutdown():ازاد سازی منابع استفاده شده توسط TextToSpeech
isSpeaking(): مشخص میکند ایا TextToSpeech در حال اجرا است یا خیر
getLanguage():زبان استفاده شده را برمیگرداند
setPitch(float pitch):برای تنظیم زیر و بم صدا و یا کلفتی و نازکی صدا است
setSpeechRate(float speechRate):سرعت خواندن را مشخص میکند
کد زیر کد کامل برنامه در اکتیویتی اصلیمان است:
i
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 | mport java.util.Locale; import android.app.Activity; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.ir.sep.tests.R.id; public class TestsActivity extends Activity { TextToSpeech t1; EditText ed1; Button b1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ed1 = (EditText) findViewById(id.editText1); b1 = (Button) findViewById(id.button1); 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); } }); } @Override public void onPause() { if (t1 != null) { t1.stop(); t1.shutdown(); } super.onPause(); } } |
پایان.
یک پاسخ به “تبدیل متن به گفتار در اندروید”