سبد (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  را به عنوان پارامتر می گیرد. لیست برخی از این مکان ها در جدول زیر آمده اند.

  • امریکا
  • کانادا - فرانسه

  • آلمان

  • ایتالیا

  • ژاپن

  • چین

زمانی که شما زبان را تنظیم کردید، می توانید متد 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 در زیر آن کلیک کنید. یک پیام ظاهر خواهد شد و متن به پیغام صوتی تبدیل می شود.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه