Is there a way to put multiple commands in different voices into the same audio file. I know you can do this:

say -v "Cellos" "la di da" -o ex.aiff

But I have multiple commands in different voices such as:

say -v "Cellos" "la di da"
say -v "Bells" "di da da"

Is there a way to have say put multiple phrases using different settings in to the same aiff or mp3 file? (If not, can I merge the individual files programmatically using terminal tools and commands?

2 Answers 2


You can use FFmpeg. Create a file named input.txt with the contents (one line for each file):

file 'ex.aiff'
file 'ex2.aiff'

Then run ffmpeg -f concat -i input.txt -c copy output.aiff.

  • I found that quotes were not accepted in input.txt, instead, spaces had to be escaped with a backslash. Also, I had to add -safe 0 to the options of ffmpeg.
    – Flimm
    Commented Nov 14, 2016 at 14:14

Using sox:

sox 1.aif 2.aif output.aif

Using ffmpeg:

ffmpeg -f concat -i <(printf %s\\n "file '$PWD/"{1,2}.aif\') -c copy output.aif
  • The printf looks very very wrong. I'm guessing you want <(printf "file '%s'\n" {1,2}.aif)
    – tripleee
    Commented Mar 24, 2020 at 17:32
  • Neither given ffmpeg solution works, both just give errors. "Unsafe filename" and "String required" respectively.
    – John Smith
    Commented Oct 1, 2022 at 10:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .