首页 文章

Android:阿拉伯语语音识别 - 离线

提问于
浏览
0

任何人都可以帮助我或给我一个关于阿拉伯语言识别的线索 - 离线为Android?

我想开发简单的应用程序进行语音识别 - 离线就像在线这样做我知道如果...如果任何人有建议或链接到开源项目甚至库来购买,这样做有效这将是惊人的 .

提前致谢 .

1 回答

  • 1

    使用

    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,"ar-JO");
    

    以下代码对我很好:

    package tk.oryx.voice;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.media.MediaRecorder;
    import android.speech.RecognitionListener;
    import android.speech.RecognizerIntent;
    import android.speech.SpeechRecognizer;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    public class MainActivity extends Activity implements View.OnClickListener {
    
        private TextView mText;
        private MediaRecorder recorder;
        private SpeechRecognizer sr;
        private static final String TAG = "MyStt3Activity";
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button speakButton = (Button) findViewById(R.id.btn_speak);
            mText = (TextView) findViewById(R.id.textView1);
            speakButton.setOnClickListener(this);
            sr = SpeechRecognizer.createSpeechRecognizer(this);
            sr.setRecognitionListener(new listener());
        }
    
        class listener implements RecognitionListener
        {
            public void onReadyForSpeech(Bundle params){ }
            public void onBeginningOfSpeech(){ }
            public void onRmsChanged(float rmsdB){ }
            public void onBufferReceived(byte[] buffer) { }
            public void onEndOfSpeech(){ }
            public void onError(int error)
            {
                mText.setText("error " + error);
            }
            public void onResults(Bundle results)
            {
                String str = new String();
                Log.d(TAG, "onResults " + results);
                ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
             /*   for (int i = 0; i < data.size(); i++)
                {
                    Log.d(TAG, "result " + data.get(i));
                    str += data.get(i);
                }
             */
              //  mText.setText("results: "+str+" "+String.valueOf(data.size()));
                mText.setText("results: "+data.get(0));
            }
            public void onPartialResults(Bundle partialResults)
            {
                Log.d(TAG, "onPartialResults");
            }
            public void onEvent(int eventType, Bundle params)
            {
                Log.d(TAG, "onEvent " + eventType);
            }
        }
        public void onClick(View v) {
            if (v.getId() == R.id.btn_speak)
            {
                Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,"ar-JO");
                intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"tk.oryx.voice");
             //   intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 20000); // value to wait
    
                intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1);  // 1 is the maximum number of results to be returned.
                sr.startListening(intent);
            }
        }
    }
    

    布局非常简单:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="tk.oryx.voice.MainActivity">
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignEnd="@+id/progressBar1"
            android:layout_alignLeft="@+id/progressBar1"
            android:layout_alignParentTop="true"
            android:layout_alignRight="@+id/progressBar1"
            android:layout_alignStart="@+id/progressBar1"
            android:layout_marginTop="220dp"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <Button
            android:id="@+id/btn_speak"
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:text="Button"
            tools:layout_editor_absoluteY="295dp"
            tools:layout_editor_absoluteX="148dp"
            android:layout_alignParentTop="true"
            android:layout_alignLeft="@+id/progressBar1"
            android:layout_alignStart="@+id/progressBar1"
            android:layout_marginTop="18dp" />
    
    </RelativeLayout>
    

    并且清单是:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="tk.oryx.voice">
    
        <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    
        <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>
    

相关问题