http://workorhobby.blogspot.com/2011/02/java-audio-freetts-line-unavailable.html
Большое спасибо автору.
Программа, основанная на FreeTTS, бесплатном преобразователе текста в речь для Java, получала случайные ошибки
"LINE UNAVAILABLE: Format is ..."
Оказывается, что нет Java Exception или другого механизма для обнаружения этой ошибки, которая происходит внутри библиотеки FreeTTS.Все, что вы получаете, - это сообщение на System.out, так что нет хорошего способа программно реагировать.
Обходной путь: Сконфигурируйте аудиопроигрыватель FreeTTS, чтобы он пытался получить доступ к аудиоустройству более одного раза, пока оно не выполнится успешно.В этом примере используется короткая задержка в 0,1 секунды, чтобы не упустить возможность захватить аудиоустройство;мы продолжаем попытки в течение 30 секунд:
System.setProperty("com.sun.speech.freetts.audio.AudioPlayer.openFailDelayMs", "100");
System.setProperty("com.sun.speech.freetts.audio.AudioPlayer.totalOpenFailDelayMs", "30000");
Если аудиоустройство постоянно используется другой программой, конечно, нет никакого способа получить доступ.В Linux эта команда отобразит идентификатор процесса, который в данный момент удерживает аудиоустройство, поэтому вы можете попытаться избавиться от программы-нарушителя:
/sbin/fuser /dev/dsp