Wie speichern Sie die Sprachausgabe als WAV-Datei?
Ich bin mit dem folgenden code zu speichern Text to Speech
Ausgabe als wav Datei in meine Anwendung. Ich bin nicht sicher, wo der Fehler ist, kannst du bitte schauen und mir empfehlen?
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);
}
}
}
Datei appTmpPath = new File(exStoragePath + "/sekhar/"); ... tempDestFile = appTmpPath.getAbsolutePath() + "/"+ tempFilename; gibt es nicht zwei '//' in dem Dateinamen?
Durch Fehler ich habe es mehrere Male. Nun habe ich entfernt und versucht. Ich habe den toast aus der onInIt-Methode wird in der Unterklasse. Jetzt habe ich, wie kann ich überprüfen, wehter es gespeichert ist oder nicht. Ich angeschlossen mein Gerät an meinen Computer und checkte die sekhar Ordner. Aber es ist keine wav-Datei. Können Sie bitte mir empfehlen? Ich druckte den Wert des "ich", das ist 0.
was text die Instanz von
es sollten Sprach, was gebe ich als input in das EditText
aber ich kann nicht sehen, keine Anweisung in deinem code oben sagen, dass Ihr Beispiel zu sprechen, den text aus der
Durch Fehler ich habe es mehrere Male. Nun habe ich entfernt und versucht. Ich habe den toast aus der onInIt-Methode wird in der Unterklasse. Jetzt habe ich, wie kann ich überprüfen, wehter es gespeichert ist oder nicht. Ich angeschlossen mein Gerät an meinen Computer und checkte die sekhar Ordner. Aber es ist keine wav-Datei. Können Sie bitte mir empfehlen? Ich druckte den Wert des "ich", das ist 0.
was text die Instanz von
MySpeach
hat gesprochen ??es sollten Sprach, was gebe ich als input in das EditText
aber ich kann nicht sehen, keine Anweisung in deinem code oben sagen, dass Ihr Beispiel zu sprechen, den text aus der
EditText
InformationsquelleAutor ChandraSekhar | 2013-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
verweisen auf die Antwort von Ted Hopp in diesem post :
Die wichtigste Methode ist synthesizeToFile. Es schreibt die audio in einer Datei auf dem Gerät, das Sie angeben. Sie können dann spielen Sie die Datei mit einem MediaPlayer oder können Sie es abziehen, das Gerät an Ihr Entwicklungssystem mit dem adb-Befehl-Linie Werkzeug, mit dem Befehl
EDIT :
versuchen, diesen code , und überprüfen Sie dann den Pfad
sdcard/
wenn es die Datei enthält :test.wav
EDIT 2 :
und wenn Sie versuchen, speichern Sie die wave Datei in den internen Speicher ( nicht die
/sdcard/
Ordner) , dann der einzige Weg dies zu erreichen ist, eine Welt zu schaffen, beschreibbarVerzeichnis im internen Speicher wie dieses:
Und dann schreiben dir.
EDIT 3 :
nachdem er einen Blick in Ihren code , Sie haben gerade einige Probleme mit der Erstellung von Verzeichnissen und Dateien : der code sollte wie folgt sein :
getestet hab ich es auf die android-emulator , und es funktioniert gut , aber Sie brauchen, um geben Sie die Größe der sdCard den emulator bye mit dem Geräte-manager, Bearbeiten eumlator, und geben Sie die Größe der sdcard : Beispiel 512 Mb. und dann finden Sie die wav-Datei in den Pfad :
mnt/sdcard/sounds/tmpaudio.wav
um es zu testen , öffnen Sie einfach die
DDMS perspective
,File Explorer
, und exportieren Sie dann die Datei auf Ihren PC .whar Fehler???????
Dies ist die erro: 02-04 15:42:17.211: E/AndroidRuntime(5735): Uncaught handler: thread main exiting due to uncaught exception 02-04 15:42:17.351: E/AndroidRuntime(5735): java.lang.NullPointerException 02-04 15:42:17.351: E/AndroidRuntime(5735): an com.Beispiel.testmedai1.MainActivity$1.onClick(MainActivity.java:56) 02-04 15:42:17.351: E/AndroidRuntime(5735): at android.Blick.Blick.performClick ("Ansicht".java:2418)
Sie haben eine
NullPointerException
mit der Zeile : 56 , was ist der code in dieser Zeile ? den vollständigen code desonClick()
MethodeDas ist eigentlich mein code-problem. Danach habe ich gelöst, und es ist, dass die Datei gespeichert wurde. Aber ich kann nicht sehen, die Datei in diesem Ordner.
InformationsquelleAutor Houcine
Können Sie
synthesizeToFile()
Vom Android
Sobald Sie benachrichtigt werden, die Synthese der Fertigstellung, können Sie spielen Sie die output-Datei wie jede andere audio-Ressource mit
android.media.MediaPlayer.
und für diese können Sie verwenden, es
nun sind Sie fertig
Ich brauche einige Klarstellungen. Kann ich den testen Sie dies, indem Sie meine app im Emulator?
habe es nicht getestet auf Emulator hoffen, dass dies funktionieren sollte Es
InformationsquelleAutor Usman Kurd