كود برمجة تطبيق أندرويد لتحويل النص إلى صوت بلغة جافا

· 684 كلمة · 4 دقيقة قراءة

أندرويد تعطينا إمكانية تحويل الكلام المكتوب إلى كلام منطوق. هذه التقنية لتحويل النص إلى صوت تدعم الكثير من اللغات أهمها اللغة الإنجليزية.

يوفر لنا نظام أندرويد كلاس TextToSpeech بتحويل النص إلى حديث (صوت). لإستخدام هذا الكلاس، علينا أولاً أن نعرف أوبجكت منه (instantiate object) من هذا الكلاس. كما ترى في الكود التالى.

private EditText write;
ttsobj = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener(){
@override
public void onInit(int status){
}
});

في كود انتظار التعليمات (Listener)، لابد أن نحدد خصائص أوبجكت TextToSpeech مثل اللغة و حدّة الصوت .. وهكذا. يمكن تحديد اللغة عن طريق setLanguage() وطريقة كتابة هذه الفانكشن كما يلي:

ttsobj.setLanguage(Locale.UK);

الميثود setLanguage تأخذ باراميتار واحد وهو اللغة مثل US أو CANADA_FRENCH أو GERMANY أو ITALY أو JAPAN أو CHINA وهكذا.

بعد تحديد اللغة، يمكنك استدعاء ميثود speak من الكلاس لتقوم بنطق الكلمات باللغة المحددة مسبقاً. طريقة كتابة كود speak يكون كالتالي:

ttsobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);

هناك الكثير من المثيودس (method) والدوال الأخرى التي يمكنك استخدامها من كلاس TextToSpeech وهذه الدوال هى:

functionits job
addSpeech(String text, String filename)هذه الدالة تربط بين النص المكتوب، وملف الصوتي للنص.
getLanguage()هذه الدالة تعطينا لغة النص.
isSpeaking()هذه الدالة تخبرنا إن كان المحرك الصوتي مشغول بنطق الكلام حالياً أم لا.
setPitch(float pitch)هذه الدالة خاصة بإختيار حدة الصوت.
setSpeechRate(float speechRate)هذه الدالة تحدد سرعة النطق.
shutdown()هذه الدالة تزيل مصادر الجهاز التي يستخدمها محرك النطق TextToSpeech engine مثل الرامات والبروسيسور.
stop()هذه الدالة مسؤولة عن إيقاف صوت نطق الكلام.

مثال على تحويل النص إلى كلام منطوق 🔗

الكود التالي هو مثال لتطبيق أندرويد يقوم بقراءة الكلام الذي تكتبه له في شكل حروف إلى أصوات الكلمات المنطوقة. لكي تجرب هذه الكود عليك ان تكتب كود البرنامج وتشغل تطبيق الأندرويد الذي أنشأته على تطبيق أندرويد حقيقي وليس محاكي.

خطوات إنشاء تطبيق أندرويد لنطق الكلام 🔗

  1. قم بإنشاء مشروع جديد على برنامج أندرويد ستوديو (Android Studio) واختر مسار حزمة البرنامج com.learns7.tts مثلاً
  2. قم بالتعديل على ملف src/MainActivity.java وأضف كود تشغيل كلاس النطق الصوتي TextToSpeech كما في الكود التالي.
  3. وصّل موبايلك الأندرويد بجهاز الكمبيوتر، ثم شغّل (run) التطبيق على موبايلك المتصلك بالجهاز. وتأكد من أن التطبيق يعمل بشكل سليم.

كود src/MainActivity.java لتحويل الكلام المكتوب إلى صوت منطوق 🔗

package com.learns7.tts;
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();
   }
}

وهذا هو كود xml المكتوب في ملف activity_main.xml الخاص بتصميم شكل التطبيق 🔗

<?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" />

   <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">TTS</string>
</resources>

كود ملف مشروع تطبيق الأندرويد AndroidManifest.xml 🔗

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.learns7.tts" >
   <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>

شغّل التطبيق على موبايلك المتصل بجهاز الكمبيوتر. وعندما يعمل التطبيق على الموبايل، أكتب كلمة Hello world مثلاً. ثم اضغط على زر Text To Speech ستجد صوت يخرج من موبايلك وينطق جملة Hello world أو أى جملة أخرى كتبتها في صندوق النص.

إن كنت تعرف صديق لك أو مجموعة أصدقاء يمكن أن يستفيدوا من هذا الشرح ارسله لهم عن طريق الواتساب أو الفيسبوك أو ماسنجر أو انستاجرام أو أى طريقة أخرى كما تريد. وإن كان لديك أى سؤال أو استفسار أكتبه في تعليق وسأقوم بالرد عليك إن شاء الله.

لمزيد من المعلومات عن البرمجة ولينكس وأندرويد وويندوز وماك وآيفون وتصميم المواقع، ابحث عن “موقع أبانوب حنا للبرمجيات” على جوجل وادخل للموقع وستجد موضوع جديد يشرح فكرة أو معلومة جميلة ومفيدة كل يوم.

التصنيفات: برمجة
مشاركة:
waffarx cash back