با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. قابلیت تبدیل متن به گفتار در اندروید به شما اجازه می دهد متن خود را به صدا تبدیل کنید. نه تنها شما می توانید آن را تبدیل کنید، بلکه همچنین اجازه می دهد تا شما را به متن در انواع مختلف زبان صحبت می کنند. اندروید کلاس TextToSpeech را برای این منظور فراهم می کند. برای استفاده از این کلاس، شما باید یک شیء از این کلاس را ایجاد کنید و همچنین initListener را مشخص کنید. برای آشنایی با چگونگی استفاده از قابلیت تبدیل متن به گفتار در برنامه نویسی اندروید در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه شما را با ساختار پیاده سازی قابلیت تبدیل متن به گفتار در اندروید و متدهای آن آشنا خواهیم کرد.
همانطور که گفته شد برای پیاده سازی قابلیت متن به گفتار در اندروید در ابتدا باید یک شیء از کلاس TextToSpeech ایجاد کنید:
1 2 3 4 5 6 | private EditText write; ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { } }); |
در این listener، شما باید ویژگی های آبجکت TextToSpeech را مشخص کنید. زبان را می توان با متد () setLanguage مشخص کرد:
1 | ttobj.setLanguage(Locale.UK); |
متد setLanguage یک آبجکت محلی را در قالب یک پارامتر دریافت می کند.
برخی از این locale ها به شرح زیر است:
Sr.No | Locale |
---|---|
۱ | US |
۲ | CANADA_FRENCH |
۳ | GERMANY |
۴ | ITALY |
۵ | JAPAN |
۶ | CHINA |
هنگامی که شما زبان را تنظیم کرده اید، می توانید متد speak را از کلاس برای صحبت کردن فراخوانی کنید:
1 | ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null); |
علاوه بر متد speak متدهای دیگری نیز در کلاس TextToSpeech در دسترس است که به شرح زیر می باشد:
ردیف | متد و توضیحات |
---|---|
۱ | addSpeech(String text, String filename) این متد یک mapping بین یک رشته و یک فایل صوتی اضافه می کند. |
۲ | getLanguage() این متد یک instance محلی را که زبان را توصیف می کند، باز می گرداند. |
۳ | isSpeaking() این متد چک می کند که آیا موتور TextToSpeech مشغول صحبت است یا خیر. |
۴ | setPitch(float pitch) این متد زمینه گفتار را برای موتور TextToSpeech تنظیم می کند. |
۵ | setSpeechRate(float speechRate) این متد سرعت گفتار را تنظیم می کند. |
۶ | shutdown() این متد منابع مورد استفاده توسط موتور TextToSpeech را آزاد می کند. |
۷ | stop() این متد صحبت را متوقف می کند. |
این متد طرز استفاده از TextToSpeech را نشان می دهد.
برای تست این برنامه شما به یک دستگاه اندروید واقعی نیاز دارید.
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی تحت عنوان پکیج com.example.Pvlearn.myapplication دنبال کنید. |
۲ | به محتوای فایل src/MainActivity.java کدهای TextToSpeech را اضافه کنید. |
۳ | طراحی مناسب با این برنامه را به فایل res/layout/activity_main.xml اضافه کنید. |
۴ | برنامه را اجرا کنید تا دستگاه اندروید شما نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java:
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 46 47 48 49 50 | package com.example.Pvlearn.myapplication; 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 java.util.Locale; 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(); } } |
محتوای فایل activity_main.xml:
نکته:abc لوگوی پی وی لرن است.
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <?xml version="1.0" encoding="utf-8"?> <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="Pvlearn" 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:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.Pvlearn.myapplication" > <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> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس پنجره ای برای انتخاب بین دستگاه اندروید شما و شبیه ساز اندروید ظاهر خواهد شد:
از پنجره ی فوق دستگاه موبایل خود را انتخاب کرده روی ok کلیک کنید، سپس صفحه زیر ظاهر می شود:
در حال حاضر فقط یک متن را در فیلد قسمت وارد کنید. سپس بر روی text to speech در زیر کلیک کنید.
یک ظاهر شده و متن تبدیل به صحبت می شود.
حالا چیز دیگری را تایپ کنید و گام قبلی را تکرار کنید، شما دوباره صدا خواهید شنید.
یکی از قابلیت هایی پرکاربردی که اندروید در ارائه می دهد قابلیت تبدیل متن به گفتار یا بلعکس است. همچنین اندروید اجازه ی استفاده از قابلیت تبدیل متن به گفتار در برنامه نویسی اندروید را در اختیار توسعه دهندگان قرار می دهد.
رضا
سلام چطوری باید بزارمش توی فرگمنت هر کاری میکنم ارور میده
ممنون میشم کمک کنید