Вы загружаете записанные данные в ByteArrayOutputStream, а затем никогда ничего не делаете с ним (как указал Джон Скит).
Когда логическое значение «запись» ложно, ТО вы присоединяете TargetDataLineв AudioInputStream?Но если запись ложна, то я предполагаю, что через TDL нет данных.Данные получают из TDL с помощью метода read (), и они находятся в цикле while.
Я думаю, что возможно создать AIS через ByteArrayInputStream, который может быть сделан из ByteArrayOutputStream, который вы использовали дляСоберите данные из TDL.
Таким образом, после того, как логическое значение записи станет ложным, попробуйте сделать AIS следующим образом:
ByteArrayInputStream bais = new ByteArrayInputStream(out.toByteArray());
AudioInputStream ais = new AudioInputStream(bais, format, baos.size());