Как мога да запазя изхода си за android tts в wav файл?

Търсих почти навсякъде, опитвайки се да намеря начин да запазя моя Android tts изход в аудио файл. Разгледах тези публикации:

но не можах да намеря/разбера отговорите. Използвам synthesizeToFile() така:

HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, result);
String fileName = "/Android/data/com.android.voicelanglearning.vll/ttsfile1.wav";
tts.synthesizeToFile(result, myHashRender, fileName);

Затова пускам отново същия въпрос. Всяка помощ е много ценена.

Благодаря ти, Муника


person mnc    schedule 15.03.2012    source източник


Отговори (3)


Важният метод е synthesizeToFile. Той ще запише аудиото във файл на устройството, което посочите. След това можете да възпроизведете този файл с MediaPlayer или можете да го изтеглите от устройството във вашата система за разработка с инструмента от командния ред adb, като използвате командата

adb pull <path-to-file>
person Ted Hopp    schedule 15.03.2012
comment
Благодаря за отговора. Но не мога да намеря файла след стартиране на synthesizeToFile(). Получавам резултата като УСПЕХ, но не мога да видя файла в директорията, която трябваше да запише. - person mnc; 15.03.2012
comment
@MounikaNamburu - Мисля, че проблемът е името на файла, който използвате. Трябва да пишете в папка, където приложението ви има разрешение за запис. Опитайте да използвате папката, върната от вашата дейност getExternalFilesDir() или в противен случай Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC). Също така се нуждаете от разрешение WRITE_EXTERNAL_STORAGE, декларирано в манифеста. - person Ted Hopp; 15.03.2012

Може да не е, че не работи на реални устройства. Проблемът може да е, че тествате истинско устройство с USB кабел, включен в компютъра в режим на отстраняване на грешки. Това може да деактивира запазването на файлове в телефона.

Environment.getExternalStorageDirectory()

Връща основната външна директория за съхранение. Тази директория може да не е достъпна в момента, ако е била монтирана от потребителя на неговия компютър, премахната е от устройството или е възникнал някакъв друг проблем. Можете да определите текущото му състояние с getExternalStorageState().

person WoodsLink    schedule 18.12.2013

TextToSpeech.synthesizeToFile() не работи в реални устройства. Работи само в AVD.

Експериментирах и с това, използвайки както оригиналния Pico TTS двигател, така и TTS двигател на трета страна, опитвайки се да пиша или на sdcard, или на вътрешната памет (на руутнато устройство):

context.getDir("soundfiles", Context.MODE_WORLD_WRITEABLE);

Но, както отбелязахте, методът връща TextToSpeech.SUCCESS без всъщност да създава файла.

Ако трябва да запишете вашия TTS изход във WAV файл, свържете изхода на слушалките към aux входа на звукова карта на вашия компютър и използвайте произволен софтуер за запис, за да го заснемете.

person ateiob    schedule 04.04.2012
comment
TextToSpeech.synthesizeToFile() работи на моето устройство (Nexus 4 с OS 4.2.2). Той синтезира посочения текст в .wav файл в директорията /sdcard/Android/data/‹com.your.package.name› на моето приложение. - person gregS; 11.04.2013