Comment conserver le texte à la parole de sortie comme le fichier WAV?
J'utilise le code suivant pour stocker Text to Speech
sortie wav fichier dans mon application. Je ne sais pas où est l'erreur, pouvez vous s'il vous plaît prendre un coup d'oeil et me suggérer?
public class MainActivity extends Activity {
Button store, play;
EditText input;
String speakTextTxt;
TextToSpeech mTts;
HashMap<String, String> myHashRender = new HashMap<String, String>();
String tempDestFile ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
store = (Button) findViewById(R.id.button1);
play = (Button) findViewById(R.id.button2);
input = (EditText) findViewById(R.id.editText1);
store.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
speakTextTxt = "Hello world Hello world Hello world Hello world Hello world Hello world Hello world Hello world Hello world Hello world Hello world";
HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speakTextTxt);
String exStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
File appTmpPath = new File(exStoragePath + "/sounds/");
appTmpPath.mkdirs();
String tempFilename = "hello.mp3";
tempDestFile = appTmpPath.getAbsolutePath() + "/" + tempFilename;
new MySpeech(speakTextTxt);
}
});
}
class MySpeech implements OnInitListener
{
String tts;
public MySpeech(String tts)
{
this.tts = tts;
mTts = new TextToSpeech(MainActivity.this, this);
}
@Override
public void onInit(int status)
{
Log.v("log", "initi");
int i = mTts.synthesizeToFile(speakTextTxt, myHashRender, tempDestFile);
if(i == TextToSpeech.SUCCESS)
{
Toast toast = Toast.makeText(MainActivity.this, "Saved "+i,
Toast.LENGTH_SHORT);
toast.show();
}
System.out.println("Result : " + i);
}
}
}
Fichier appTmpPath = new File(exStoragePath + "/sekhar/"); ... tempDestFile = appTmpPath.getAbsolutePath() + "/"+ tempFilename; il n'existe pas de deux '//' à votre nom de fichier?
Par erreur je l'ai ajouté à de multiples reprises. Maintenant, je l'ai enlevé et j'ai essayé. J'ai eu le toast de méthode onInIt qui est dans la sous-classe. Maintenant, je comment puis-je vérifier wehter il est enregistré ou non. J'ai connecté mon appareil à mon ordinateur et vérifié les sekhar dossier. Mais il n'existe pas de fichier wav. Pouvez vous s'il vous plaît me suggérer? J'ai imprimé la valeur de "i" est de 0.
ce texte votre instance de
il doit parlé de ce que je donne comme entrée dans l'EditText
mais je ne peux pas voir les instructions dans le code ci-dessus qui dit à votre instance de prononcer le texte de la
Par erreur je l'ai ajouté à de multiples reprises. Maintenant, je l'ai enlevé et j'ai essayé. J'ai eu le toast de méthode onInIt qui est dans la sous-classe. Maintenant, je comment puis-je vérifier wehter il est enregistré ou non. J'ai connecté mon appareil à mon ordinateur et vérifié les sekhar dossier. Mais il n'existe pas de fichier wav. Pouvez vous s'il vous plaît me suggérer? J'ai imprimé la valeur de "i" est de 0.
ce texte votre instance de
MySpeach
n'a parlé ??il doit parlé de ce que je donne comme entrée dans l'EditText
mais je ne peux pas voir les instructions dans le code ci-dessus qui dit à votre instance de prononcer le texte de la
EditText
OriginalL'auteur ChandraSekhar | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
se référant à la réponse de Ted Hopp dans ce post :
La méthode importante est synthesizeToFile. Il va écrire de l'audio à un fichier sur le périphérique que vous spécifiez. Vous pouvez ensuite lire ce fichier avec un lecteur multimédia ou vous pouvez le retirer de l'appareil sur votre système de développement de la bad outil de ligne de commande à l'aide de la commande
EDIT :
essayer ce code , puis vérifiez le chemin d'accès
sdcard/
si il contient le fichier :test.wav
EDIT 2 :
et si vous essayez d'enregistrer le fichier wave à la mémoire interne ( pas le
/sdcard/
dossier) , alors la seule façon d'y parvenir est de créer un monde accessible en écriturerépertoire dans la mémoire interne comme ceci:
Puis d'écrire à ce dir.
EDIT 3 :
après avoir pris un coup d'oeil dans votre code , vous avez juste quelques problèmes avec la création de répertoires et de fichiers : le code devrait ressembler à ceci :
je l'ai testé sur émulateur android , et il fonctionne très bien , mais vous devez spécifier la taille de la carte sd de votre émulateur bye aide du gestionnaire de périphériques, modifier eumlator, et de spécifier la taille de votre carte sd : exemple de 512 Mo. et puis, vous trouverez le fichier wav dans le chemin d'accès :
mnt/sdcard/sounds/tmpaudio.wav
pour le tester , il suffit d'ouvrir le
DDMS perspective
,File Explorer
, puis exporter le fichier sur votre PC .quel erreur ?????
C'est le erro: 02-04 15:42:17.211: E/AndroidRuntime(5735): Uncaught gestionnaire: thread principal de la fermeture en raison de uncaught exception 02-04 15:42:17.351: E/AndroidRuntime(5735): java.lang.NullPointerException 02-04 15:42:17.351: E/AndroidRuntime(5735): au com.exemple.testmedai1.MainActivity$1.onClick(MainActivity.java:56) 02-04 15:42:17.351: E/AndroidRuntime(5735): au android.vue.Vue.performClick(point de Vue.java:2418)
vous avez un
NullPointerException
à la ligne : 56 , quel est le code dans cette ligne ? mettre le code complet de laonClick()
méthodeC'est en fait mon problème de code. Après que je me suis décidé, c'est que le fichier a été enregistré. Mais je ne vois pas le fichier dans ce dossier.
OriginalL'auteur Houcine
Vous pouvez utiliser
synthesizeToFile()
De Android
Une fois que vous êtes informé de la synthèse à la fin, vous pouvez lire le fichier de sortie comme toutes les autres ressources audio avec
android.media.MediaPlayer.
et pour cela, vous pouvez l'utiliser
maintenant que vous avez terminé
J'ai besoin de quelques éclaircissements. Puis-je le tester en exécutant mon application dans l'Émulateur?
n'a pas été testé sur Émulateur espère que cela doit fonctionner sur Elle
OriginalL'auteur Usman Kurd