うーん、質問をした後、グーグルで検索した方が運がよかったので...:
http://workorhobby.blogspot.com/2011/02/java-audio-freetts-line-unavailable.html
作者に感謝します。
更新:実際には、回線が空くまで FreeTTS を保留にするため、これは適切な回避策ではありません。
FWIU、言及されたパッチにはより良い解決策がありました-排他的アクセスなどを要求しません。
更新: FreeTTS のトラブルシューティングページをまとめました。
Java 用の無料のテキスト読み上げエンジンである FreeTTS に基づくプログラムで、時折エラーが発生していました。
"LINE UNAVAILABLE: Format is ..."
FreeTTS ライブラリ内で発生するこのエラーを検出するための Java 例外またはその他のメカニズムがないことが判明しました。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 では、このコマンドは現在オーディオ デバイスを保持しているプロセスの ID を表示するので、問題のあるプログラムの削除を試みることができます。
/sbin/fuser /dev/dsp