إنشاء تطبيق يحول الصوت إلي نص Speech to text
في هذا الدرس سنتعلم خطوات تحويل الكلام إلي نص و وضعه في أداة
TextView في
نظام الاندرويد
يوجد في الاندرويد ميزة ممتازة لم يستخدمها المطورين بشكل
جيد حتى ألان و هي قدرة الاندرويد علي تحويل الكلام إلي نص بمهارة فائقة و تسمى SpeechToText ، و نحن نعلم جيدا أن الأوامر
الصوتية هي التي ستسود مستقبلا و من حسن الحظ ان الاندرويد قد قدم لنا تلك الميزة
الرائعة
شرح المشروع :
سنقوم بإنشاء تطبيق بسيط يحتوي علي زر من نوع ImageButton باسم btnSpeak
يحمل
صورة ميكروفون، و عند اضغط علية يقوم بفتح نافذة التعرف علي الصوت و التي تاخذ
الصوت كمدخل و تحوله إلي نص ووضع النص في الأداة TextView
باسم txtText
الخطوة الأولي :
قم بفتح برنامج eclips و بدء مشروع جديد من خلال الذهاب الي
New>Project>Android Project
أعطي المشروع اسم SpeechToText
و الـ Package أعطها القيمة arabic.android.speechtotext
و اختر نظام التشغيل Android 2.1 أو
الأعلى منه ثم اضغط التالي
-->
بعد إنشاء المشروع سنقوم بتعديل محتويات النشاط Activity
بكتابة الكود التالي :
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textView1"
android:layout_toLeftOf="@+id/textView1"
android:gravity="center"
android:orientation="vertical" >
<ImageButton
android:id="@+id/btnSpeak"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:contentDescription="speak"
android:src="@android:drawable/ic_btn_speak_now" />
<TextView
android:id="@+id/txtText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
توجة الي ملف الجافا MainActivity.java في
المسار
قم باستبدال الكود بالكود التالي ثم احفظ التغيرات
package Arabic.android.SpeechToText ;
import java.util.ArrayList;
import android.app.Activity;
import
android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class
MainActivity extends Activity {
protected static final int RESULT_SPEECH = 1;
private ImageButton
btnSpeak;
private
TextView txtText;
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtText =
(TextView) findViewById(R.id.txtText);
btnSpeak =
(ImageButton) findViewById(R.id.btnSpeak);
btnSpeak.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
try {
startActivityForResult(intent, RESULT_SPEECH);
txtText.setText("");
} catch (ActivityNotFoundException a) {
Toast t = Toast.makeText(getApplicationContext(),
"Opps! Your device doesn't support Speech to Text",
Toast.LENGTH_SHORT);
t.show();
}
}
});
}
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected void
onActivityResult(int requestCode, int
resultCode, Intent data) {
super.onActivityResult(requestCode,
resultCode, data);
switch
(requestCode) {
case RESULT_SPEECH: {
if (resultCode
== RESULT_OK && null !=
data) {
ArrayList<String> text = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txtText.setText(text.get(0));
}
break;
}
}
}
}
التعرف علي الكلام موجود في حزمة الاندرويد API و تسمي android.speech و الكائن الفرعي المبثق منها و الذي يسمي android.speech.RecognizerIntent
و هذا الكائن هو المسئول عن إظهار مربع الحوار الذي سيستخدم
لإدخال الصوت إلي التطبيق ثم إرسالها الي Speech للتعرف عليها ثم إعادة النص الذي تم التعرف عليه
الي نفس النشاط الحالي Calling activity
لهذا استخدما الدالة startActivityForResult()
لنخبر الاندرويد اننا بحاجة الي الانصات و استرجاع النص المحول مرة اخري الا نفس
النشاط ووضعة في الاداة txtText
قم بحفظ التغيرات و تشغيل التطبيق علي المحاكي
سيظهر لك بالصورة التالية
هل يمكن تحويل الكلام العربي الى نصوص ام الانجليزي فقط
ردحذفهل يمكن تحويل الكتابه الى صوت يعني عكس هذا البرنامج
ردحذفاو انه يعمل ع تحويل الصوره الى صوت
ارجوو الرد
أزال المؤلف هذا التعليق.
ردحذف