2014-04-19 17 views
14

Voglio creare un'applicazione Android che riconosca il parlato e lo converta in testo di pronuncia (per confrontare la pronuncia o l'accento tra parole speciali e parole dell'utente). So solo che è possibile creare una sintesi vocale. Voglio convertire qualsiasi parola che l'utente dice.Il modo migliore per convertire la pronuncia in pronuncia

C'è qualche API per farlo? In caso contrario, per favore aiutami come implementarlo.

+0

check http://ispikit.com –

+2

non è quello che voglio. la libreria Android non è gratuita. e sto cercando il modo più flessibile. la difficoltà non è importante. –

+1

Se si desidera una libreria libera, è possibile indicarla nella domanda. –

risposta

2

ho solo dare un codice per il parlato in testo. È una demo. Non so che questo ti aiuterà. Ma sto usando questo per la mia applicazione. Prova ad usarlo.

SpeechtoText.java

public class SpeechtoText 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(), 
         "Ops! 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; 
    } 
    } 
} 

}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
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="@string/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> 
Problemi correlati