D A S E N Y
تبدیل گفتار به متن

با سلام خدمت تمامی دوستان و همراهان دوست داشتنی سایت Daseny. در این آموزش می خواهیم نحوه تبدیل گفتار به متن را در اندروید آموزش ببینیم.

صحبت کردن یک راه ارتباطی بسیار رایج در سراسر جهان است. همچنین راحت ترین روش نیز هست. حال اگر برنامه ای باشد که این امکان را به کاربر بدهد که با حرف زدن کار خود را انجام دهد، بسیار ارتباط خوبی با کاربران برقرار می کند. برای مثال می توانیم برنامه ای برای ذخیره یادداشت ها بسازیم که به جای تایپ کردن بتوان در آن صحبت کرد.

اما روش تبدیل گفتار به متن در اندروید چیست؟ برای یافتن پاسخ این پرسش با ما همرا باشد.

تبدیل گفتار به متن در اندروید

برای این که بتوانیم صدا را به متن تبدیل کنیم گوگل یک ابزاری در اختیار ما گذاشته است که راحت تر این کار را انجام دهیم. برای استفاده از این ابزار ابتدا باید مجوز دسترسی به اینترنت را برای برنامه خودمان کسب کنیم. برای این کار خط زیر را به AndroidManifest برنامه اضافه می کنیم.

<uses-permission android:name=”android.permission.INTERNET”/>

پس از این کار به سراغ طراحی Layout می رویم. در این پروژه ما به یک Button برای شروع صحبت کردن و یک ListView برای نمایش متون پیشنهادی نیاز داریم.

<Button
    android:id=”@+id/start_btn”
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
    android:layout_centerHorizontal=”true”
    android:layout_marginTop=”12dp”
    android:text=”صحبت کردن”
    android:onClick=”onBtnStartClick”/>

<ListView
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    android:layout_below=”@id/start_btn”
    android:id=”@+id/list”/>

اکنون نوبت به نوشتن کد های جاوا می رسد. ابتدا متغیر های خودمان تعریف می کنیم.

private static final int REQUEST_CODE = 1234;
ListView suggestionList;
ArrayList<String> matches_text;

در مرحله بعد در ()onClick دکمه یک Intent ایجاد می کنیم که ابزار تشخیص صدای گوگل اجرا شود.

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, REQUEST_CODE);

اکنون برای اینکه بتوانیم نتیجه را به دست آوریم باید متد ()onActivityResult را Override کنیم. برای اینکار کلید ctrl+O را فشار دهید و از پنجره باز شده این متد را پیدا کرده و روی OK کلیک کنید. سپس کد های زیر را درون آن قرار دهید.

if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
    suggestionList = findViewById(R.id.list);
    matches_text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, matches_text);
    suggestionList.setAdapter(adapter);
}

به این صورت تمامی متونی که به صدا ظبط شده شبیه هستند، در ListView ما نمایش داده می شوند.

در این آموزش با تبدیل صدا به متن آشنا شدیم. ما حتی می توانیم این کار را به صورت برعکس انجام دهیم. یعنی یک متن را به گفتار تبدیل کنیم.

کد های برنامه

AndroidManifest.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
    package=”com.example.myapplication”>

    <uses-permission android:name=”android.permission.INTERNET”/>

    <application
        android:allowBackup=”true”
        android:icon=”@mipmap/ic_launcher”
        android:label=”@string/app_name”
        android:roundIcon=”@mipmap/ic_launcher_round”
        android:supportsRtl=”true”
        android:theme=”@style/AppTheme”>
        <activity android:name=”.MainActivity”>
            <intent-filter>
                <action android:name=”android.intent.action.MAIN” />

                <category android:name=”android.intent.category.LAUNCHER” />
            </intent-filter>
        </activity>
    </application>

</manifest>

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”
    tools:context=”.MainActivity”>

    <Button
        android:id=”@+id/start_btn”
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:layout_centerHorizontal=”true”
        android:layout_marginTop=”12dp”
        android:text=”صحبت کردن”
        android:onClick=”onBtnStartClick”/>

    <ListView
        android:layout_width=”match_parent”
        android:layout_height=”match_parent”
        android:layout_below=”@id/start_btn”
        android:id=”@+id/list”/>
</RelativeLayout>

MainAvtivity.java

package com.example.myapplication;

import android.content.Intent;
import android.speech.RecognizerIntent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 1234;
    ListView suggestionList;
    ArrayList<String> matches_text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onBtnStartClick(View view){
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        startActivityForResult(intent, REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
            suggestionList = findViewById(R.id.list);
            matches_text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                    android.R.layout.simple_list_item_1, matches_text);
            suggestionList.setAdapter(adapter);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

این آموزش هم به پایان رسید. لطفا نظرات، پیشنهادات و انتقادات خود را برای ما بنویسید. همچنین اگر سوالی دارید می توانید در بخش نظرات بازگو کنید. ما در اسرع وقت پاسخ گوی شما خواهیم بود.

اگر به برنامه نویسی اندروید علاقه دارید، می توانید در دوره برنامه نویسی اندروید ما شرکت کنید.

مطالب اخیر

پیام بگذارید