6 Replies Latest reply: Oct 20, 2012 4:56 PM by BobHarris
Pitsypat Level 1 (0 points)

I have completed a first draft of a book I am writing.
I'd like to have Alex read each chapter and have a way to record it so I can play it back. How do I do that?

MacBook Pro, Mac OS X (10.7.5)
  • VikingOSX Level 6 (15,696 points)



    In System Preferences > Dictation & Speech > Text to Speech:


    Select System Voice: (you have, Alex)

    Speaking Rate: adjust to desired speed.

    Check, “Speak selected text when the key is pressed”

    Default: Option+Esc. You can change this.

    (On selected text, a right-mouse button, offers a Speech menu item too.)


    Close System Preferences.


    I had to run some tests first. Text to speech with Alex will work in Pages '09 v4.2 with the following filetypes:





    It will speak selected passages of text in a PDF file, providing it is opened in Apple's Preview app. With Adobe Reader 11, it only will speak the filename.


    It will speak normal highlighted passages of text, and will even annunciate numbered or bullet lists. It will not speak items within tables.




    Unless you want to record with a cell phone, I would pick one of the 27 applications I found in the App Store with the search string, “Voice Record.” One of these must have the ability to manage and organize the voice capture files.


    You will need a Mac compatible microphone and make the appropriate adjustments in System Preferences > Sound > Input.


    If it is a goal, you can have your book read in your own voice and recorded. Take a look a CereProc in Scotland. They will take a voice sample from you, and generate a native voice file for OS X. Listen to their examples. Convincing?

  • VikingOSX Level 6 (15,696 points)

    And as a footnote, one can open a terminal window and have Alex read an entire chapter from a UTF-8 encoded text file. Pages, unfortunately does not export text files in UTF-8 encoding, and thus, the say(1) command will fail. TextEdit, does offer UTF-8 text output in its Preferences. The voice recording app could be running while the say command is running in the terminal.


    The say command will use the text to speech voice and speaking rates set in System Preferences.


    say -f Chapter-1.txt


  • Pierre L. Level 5 (4,235 points)

    I would use Audacity in conjunction with Soundflower. Both are free software.


    Message was edited by: Pierre L.

  • Jeffrey Jones2 Level 6 (8,615 points)

    You can use Automator.


    For example, Get Contents of TextEdit Document > Text to Audio File. Both Actions are in the Text Library. The output file is AIFF.

  • VikingOSX Level 6 (15,696 points)

    I went into /Applications/Automator and chose to make a new service.

    Still within Automator, I chose Text among the Library choices.

    And then, I dragged the “Text to Audio File” item right into the build area.


    Now, where it states that Service receives selected, I chose rich text in any application, where Input is entire selection.

    I left unchecked, Output replaces selected text. The image below shows the text, rather than the rich text choice.


    The System Voice was set to Alex.

    The output file was set to alexspoken.aiff.

    If you leave this field blank, it will write “audio text.aiff” to the Desktop.

    To be written on the desktop.


    It looked like this:


    Screen Shot 2012-10-19 at 10.05.21 PM.png


    I now saved this service as text2voicefile, and exited Automator.

    This service file is written into the Library/Services folder within the home directory.

    When it is saved from automator, it is already checked in the System Preferences > Keyboard > Keyboard Shortcuts > Services area.


    In for instance, Pages '09 v4.2, I highlighted some document text. I then selected:


    Pages > Services > text2voicefile


    Screen Shot 2012-10-19 at 10.10.15 PM.png


    It is silently written to the desktop as alexspoken.aiff. If you right mouse button select this file,

    it can be opened with and played by a miniature Quicktime audio player. You can listen to

    Alex narrate back to you.

  • BobHarris Level 6 (17,669 points)

    VikingOSX with the 'say' command is on the right track for simplicity.


    say -f Chapter-1.txt -o output_file.aiff -r <rate_in_words_per_minute> -v alex


    This should read the text from Chapter-1.txt,, in the specified words/minute rate you specify using the Alex voice and record all of this in AIFF audio formation in the file output_file.aiif.


    You can then use the audio editor of your choice to convert that to any audio format you desire (iTunes will do converstions to AAC, but something like Audacity will give you a world of output formats.


    The say --file-format=?

    can give you all of the following output formats besides AIFF:

    3gp2  3GPP-2 Audio         (.3g2) [Qclp,aac,aace,aach,aacl,aacp]

    3gpp  3GP Audio            (.3gp) [Qclp,aac,aace,aach,aacl,aacp]

    AIFC  AIFC                 (.aifc,.aiff,.aif) [lpcm,ulaw,alaw,ima4,Qclp]

    AIFF  AIFF                 (.aiff,.aif) [lpcm]

    NeXT  NeXT/Sun             (.snd,.au) [lpcm,ulaw]

    Sd2f  Sound Designer II    (.sd2) [lpcm]

    WAVE  WAVE                 (.wav) [lpcm,ulaw,alaw]

    adts  AAC ADTS             (.aac,.adts) [aac,aach,aacp]

    caff  CAF                  (.caf) [Qclp,aac,aace,aach,aacl,aacp,alac,alaw,ilbc,ima4,lpcm,ulaw]

    m4af  Apple MPEG-4 Audio   (.m4a,.m4r) [aac,aace,aach,aacl,aacp,alac]

    mp4f  MPEG-4 Audio         (.mp4) [aac,aace,aach,aacl,aacp]


    I would expect that depending on how well you want your audio output to sound, you may want to be using an audio editor such as Audacity to cut and paste spoken phrases together so you get the best phrasing, pauses for effect, specifying alternate spellings for words that Alex gets wrong.  For example Peabody, MA may not come out correctly, but "peabidy Massachusetts" will come much closer to the way Peabody, MA residents pronounce the name of the town.  There are bound to be words that do not get spoken the way you expect to hear them.  You can use the say command to experiment with phasing and pronunciation, then capture the output, and use an editor to form the final result.