0

アラビア語の音声認識について手伝ったり、私に手掛かりを与えることができますか?Android:アラビア語音声認識 - オフライン

私は音声認識を行う簡単なアプリケーションを開発したいと思っています - オンラインでこれを行うことと同じように私は知っています...もし誰かがこれを効率的に行うオープンソースプロジェクトやライブラリに提案やリンクを持っていれば素晴らしい。

ありがとうございます。

答えて

1

使用

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

は、以下のコードは、私と一緒にうまく働い:

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

とマニフェストは次のとおりです:

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