Fw: Audio Books

From: Harvey Newstrom (newstrom@newstaffinc.com)
Date: Sun Jan 09 2000 - 15:08:29 MST


Sorry if you get this twice. I didn't see it show up on the List, so I'm
resending it.

--
Harvey Newstrom <http://harveynewstrom.com>
Certified Consultant,  Legal Hacker, Engineer, Research Scientist, Author.
----- Original Message -----
From: Harvey Newstrom <newstrom@newstaffinc.com>
To: <extropians@extropy.com>
Sent: Sunday, January 09, 2000 12:59 pm
Subject: Re: Audio Books
> <EvMick@aol.com> wrote on Sunday, January 09, 2000 4:12 am,
>
> > I've just (re)discovered audio books..
>
> I loved these a few years ago when I was commuting 90 minutes each way to
a
> consulting job.  I got more "reading" done that year than I had in a long
> time!  Try looking at your local library for audio books you can borrow
for
> free to reduce your costs.
>
> > Hows about some enterprising software type writing a program that would
> > turn a paperback book into a CD audio?
>
> I already use my Macintosh to do this.  I use it to make audio tapes of
> texts I download off the Internet, so I don't do much scanning for this
> purpose.
>
> The Mac has built-in text-to-speech capabilities, and most text editors
have
> a "Read outloud" command.  Just stick the sound output into a
taperecorder,
> and you've got it made.
>
> To add a little more control, I wrote my own little Applescript batch job.
> It does the following:
>     - choose the file to speak
>     - select length of each tape side (default is 45 minutes for my tapes)
>     - progress bar shows percentage complete
>     - progress bar estimates time left to speak
>     - progress box shows text of current sentence being spoken
>     - script stops before end-of-tape and prompts for turn-over or next
tape
>     - script keeps track of tape/side number and shows what label to put
on
> tapes
>
> I wrote and debugged this in about an hour.  I tested it with about a year
> of use.
>
> > EvMick
> > Effingham, Ill.
>
> (I grew up on a little farm just outside Effingham, Illinois.)
>
> --
> Harvey Newstrom <http://harveynewstrom.com>
> Certified Consultant,  Legal Hacker, Engineer, Research Scientist, Author.
> ____________________________________________________________
> -- This is my script to create audio tapes from ASCII files --
>
> -- Select file to speak
>
> set thisfilename to (choose file with prompt "Speak File:") as string
> set startfilename to 0
> repeat with i from 2 to (count of thisfilename) - 1
>  if character i of thisfilename is ":" then set startfilename to i + 1
> end repeat
> set thisfileshortname to characters startfilename through -1 of
thisfilename
> as string
> set thisfile to (open for access thisfilename)
> tell application "Finder" to set thisfilesize to (get eof thisfile)
>
> -- Select tape length
>
> set lengthtime to 0
> set temptime to 45
> repeat while lengthtime = 0
>  activate
>  display dialog "Pause for tape change every:" buttons {"<", (temptime as
> string) & " minutes", ">"} default button 2
>  set thisbutton to button returned of result
>  if thisbutton is equal to "<" then
>   set temptime to temptime - 15
>  else if thisbutton is equal to ">" then
>   set temptime to temptime + 15
>  else
>   set lengthtime to temptime
>  end if
>  if temptime ² 0 then
>   set temptime to 15
>  end if
> end repeat
>
> -- Start progress bar
>
> set thistape to 1
> set thisside to "A"
> set currentposition to 0
> set previouslyrecorded to 1
> tell application "Finder"
>  set myFile to file of (every process whose frontmost is true)
>  set comment of information window of myFile to "Speaking:  \"" &
> thisfileshortname & "\"" & return & "Current Position:  1A:00:00 out
> of --:--:--"
>  open information window of myFile
> end tell
>
> -- speak entire file
>
> set speaking to "not done"
> repeat while speaking is "not done"
>  set starttime to (current date)
>  set endtime to starttime + lengthtime * minutes
>  try
>   with timeout of lengthtime seconds
>    repeat while (current date) < endtime
>     set thistext to (read thisfile until ".")
>     set limit to (count of thistext) - 1
>     if limit > 30 then
>      set limit to 30
>     end if
>     if limit > 5 then
>      if (characters 1 through limit of thistext) contains return then
>       if character 1 of thistext is return then set thistext to (space &
> (characters 2 through -1 of thistext)) as string
>       repeat with i from 2 to limit
>        if character i of thistext is return then set thistext to
> ((characters 1 through (i - 1) of thistext) & space & (characters (i + 1)
> through -1 of thistext)) as string
>       end repeat
>      end if
>     end if
>     set currenttime to (current date)
>     set difftime to currenttime - starttime
>     set currentposition to currentposition + (length of thistext)
>     set thisminute to round (difftime / 60) rounding down
>     if thisminute < 10 then set thisminute to "0" & thisminute
>     set thissecond to round (difftime - thisminute * 60) rounding down
>     if thissecond < 10 then set thissecond to "0" & thissecond
>     set secondsdone to previouslyrecorded + difftime
>     set estimatedseconds to secondsdone * (thisfilesize / currentposition)
>     set estimatedtapes to round (estimatedseconds / 60 / lengthtime)
> rounding up
>     if estimatedtapes mod 2 is not 0 then
>      set estimatedtapes to (round (estimatedtapes / 2) rounding up) & "A"
>     else
>      set estimatedtapes to estimatedtapes / 2 & "B"
>     end if
>     set oddminutes to round ((estimatedseconds / 60) mod (lengthtime))
> rounding down
>     if oddminutes < 10 then set oddminutes to "0" & oddminutes
>     set oddseconds to round (estimatedseconds mod 60) rounding down
>     if oddseconds < 10 then set oddseconds to "0" & oddseconds
>     tell application "Finder"
>      set comment of information window of myFile to "Speaking:  \"" &
> thisfileshortname & "\"" & return & "Current Position:  " & thistape &
> thisside & ":" & thisminute & ":" & thissecond & " out of " &
estimatedtapes
> & ":" & oddminutes & ":" & oddseconds & return & thistext
>     end tell
>     tell me to say thistext
>    end repeat
>   end timeout
>   if thisside is "A" then
>    set thisside to "B"
>   else
>    set thisside to "A"
>    set thistape to thistape + 1
>   end if
>   set previouslyrecorded to previouslyrecorded + (lengthtime * minutes)
>   activate
>   display dialog "Start recording Tape " & thistape & " Side " & thisside
> buttons {"Cancel", "OK"} default button 2
>
>  on error errorMessage number errorNumber -- Handle end-of-file, cancel
> button,  time-out or other errors
>   set speaking to "Done!"
>   activate
>   if errorNumber = -39 then -- end of file
>    try
>     set thistext to (read thisfile)
>     tell me to say thistext
>    on error
>    end try
>    tell application "Finder" to set comment of information window of
myFile
> to "Done speaking \"" & thisfileshortname & "!" & return & "Ending
Position:
> " & thistape & thisside & ":" & thisminute & ":" & thissecond
>    play sound "Done"
>   else if errorNumber = -128 then -- cancel button
>    tell application "Finder" to set comment of information window of
myFile
> to "Cancelled speaking \"" & thisfileshortname & "!" & return & "Current
> Position:  " & thistape & thisside & ":" & thisminute & ":" & thissecond
>    play sound "Synth Twang"
>   else
>    display dialog errorMessage & "(" & errorNumber & ")" buttons {"OK"}
> default button "OK" with icon 0
>   end if
>  end try
>
> end repeat
>
>
>


This archive was generated by hypermail 2.1.5 : Fri Nov 01 2002 - 15:26:11 MST