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 2b29 : Thu Jul 27 2000 - 14:02:11 MDT