Mac Developer Library Developer


This manual page is for Mac OS X version 10.9

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

SAY(1)                                    Speech Synthesis Manager                                    SAY(1)

       say - Convert text to audible speech

           say [-v voice] [-r rate] [-o outfile [audio format options] | -n name:port | -a device] [-f file | string ...]

       This tool uses the Speech Synthesis manager to convert input text to audible speech and either play
       it through the sound output device chosen in System Preferences or save it to an AIFF file.

           Specify the text to speak on the command line. This can consist of multiple arguments, which are
           considered to be separated by spaces.

       -f file, --input-file=file
           Specify a file to be spoken. If file is - or neither this parameter nor a message is specified,
           read from standard input.

       -v voice, --voice=voice
           Specify the voice to be used. Default is the voice selected in System Preferences. To obtain a
           list of voices installed in the system, specify '?' as the voice name.

       -r rate, --rate=rate
           Speech rate to be used, in words per minute.

       -o out.aiff, --output-file=file
           Specify the path for an audio file to be written. AIFF is the default and should be supported for
           most voices, but some voices support many more file formats.

       -n name, --network-send=name
       -n name:port, --network-send=name:port
       -n :port, --network-send=:port
       -n :, --network-send=:
           Specify a service name (default "AUNetSend") and/or IP port to be used for redirecting the speech
           output through AUNetSend.

       -a ID, --audio-device=ID
       -a name, --audio-device=name
           Specify, by ID or name prefix, an audio device to be used to play the audio. To obtain a list of
           audio output devices, specify '?' as the device name.

           Display a progress meter during synthesis.

       -i, --interactive, --interactive=markup
           Print the text line by line during synthesis, highlighting words as they are spoken. Markup can
           be one of

              A terminfo capability as described in terminfo(5), e.g. bold, smul, setaf 1.

              A color name, one of black, red, green, yellow, blue, magenta, cyan, or white.

              A foreground and background color from the above list, separated by a slash, e.g.
               green/black. If the foreground color is omitted, only the background color is set.

           If markup is not specified, it defaults to smso, i.e. reverse video.

       If the input is a TTY, text is spoken line by line, and the output file, if specified, will only
       contain audio for the last line of the input.  Otherwise, text is spoken all at once.

       Starting in MacOS X 10.6, file formats other than AIFF may be specified, although not all third party
       synthesizers may initially support them. In simple cases, the file format can be inferred from the
       extension, although generally some of the options below are required for finer grained control:

           The format of the file to write (AIFF, caff, m4af, WAVE). Generally, it's easier to specify a
           suitable file extension for the output file. To obtain a list of writable file formats, specify
           '?' as the format name.

           The format of the audio data to be stored. Formats other than linear PCM are specified by giving
           their format identifiers (aac, alac). Linear PCM formats are specified as a sequence of:

           Endianness (optional)
               One of BE (big endian) or LE (little endian). Default is native endianness.

           Data type
               One of F (float), I (integer), or, rarely, UI (unsigned integer).

           Sample size
               One of 8, 16, 24, 32, 64.

           Most available file formats only support a subset of these sample formats.

           To obtain a list of audio data formats for a file format specified explicitly or by file name,
           specify '?' as the format name.

           The format identifier optionally can be followed by @samplerate and /hexflags for the format.

           The number of channels. This will generally be of limited use, as most speech synthesizers
           produce mono audio only.

           The bit rate for formats like AAC. To obtain a list of valid bit rates, specify '?' as the rate.
           In practice, not all of these bit rates will be available for a given format.

           The audio converter quality level between 0 (lowest) and 127 (highest).

       say returns 0 if the text was spoken successfully, otherwise non-zero.  Diagnostic messages will be
       printed to standard error.

          say Hello, World
          say -v Alex -o hi -f hello_world.txt
          say --interactive=/green spending each day the color of the leaves
          say -o hi.aac 'Hello, [[slnc 200]] World'
          say -o hi.m4a --data-format=alac Hello, World.
          say -o hi.caf --data-format=LEF32@8000 Hello, World

          say -v '?'
          say --file-format=?
          say --file-format=caff --data-format=?
          say -o hi.m4a --bit-rate=?

       "Speech Synthesis Programming Guide"

1.0                                              2012-09-15                                           SAY(1)

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.