Использование канала для этой операции более эффективно и эффективно, чем использование файла, просто по следующим причинам:
1) Канал (|) - это метод межпроцессного взаимодействия.Выходные данные одного процесса напрямую отправляются на вход другого процесса с использованием буфера на основе ядра.Так что это дает большую скорость, чем запись чего-либо в файл на жестком диске и чтение его с него.Однако это зависит и от других факторов.Как правило, ядро также записывает и считывает небольшие файлы из буферов и дисковых кэшей.
2) Использование техники межпроцессного взаимодействия также помогает в получении параллельной работы.Вместо этого, если бы вам нужно было что-то записать в файл, а затем прочитать из него, это должно было бы быть выполнено поэтапно, чтобы вы потеряли параллелизм.
Я полагаю, вы имели в виду
arecord -D hw:0 test.wav && aplay -D hw:1 test.wav
вместо
arecord -D hw:0 test.wav | aplay -D hw:1 test.wav