Showing posts with label Keynote. Show all posts
Showing posts with label Keynote. Show all posts

Saturday, November 22, 2014

Using Keynote and Automator for Rapid Screencasting

Automator-based automation in MacOS X 10.10 has a number of important improvements. New Keynote actions for Automator are among them. There are Document Actions (9), Slide Actions (9), Image Actions (2), Chart Actions (1), and Workflow Recipes (6). You can download a Master Installer for these Keynote Actions. There are also a number of Keynote AppleScript commands that can be used.
Among the Document Actions is “Present Slideshow with Narration” which more easily provides the functionality that I described in an earlier post, “
Recording the Self-presenting Presentation.” Thus, rapid screencasting of narrated Keynote presentations is now faster and easier than ever as long as you are OK with choosing only one voice for the entire narration. If not, you’ll need to use the method described in the earlier post if you want to change voices on a slide-by-slide basis. The reason that we’re so interested in screencasting here is that screencasts make excellent instructional videos to include in our eBooks and eTextbooks.
So, how fast is this? The following screencast answers this question better than any number of words.



Download the 1280 X 800 version of this video with a control/right-click
here. Choose “Download linked file as …” naming it “PresentSlideshowWithNarration” or something else that is intuitive for you.

And how easy is this? Here’s a stepwise description of what the set-up process looks like.
1)
Download the example archive. It will have the name “Narrated-Presentation-Workflow.zip” which you should unpack with a double-click to reveal a folder named, “Narrated-Presentation-Workflow.” The contents of that folder should look like this in list view:


Demo Files


2) Run the installer named “Install Workflows.app.” It should let you know exactly what it is about to do and alert you to the fact that this operation will require the approval of an administrative user of that computer.




Install Warning


… followed by a completion message that looks like this:



Install Complete


Note that all the operations cited above are done only once. You will have the capacity of auto narrating any Keynote file containing presenter notes from now on simply by opening a Keynote file that has presenter notes and then selecting “Narrate Frontmost Presentation” from the script menu in MacOS X 10.10 just as depicted in the screencast above.

3) Unpack “narratorpresentation-file.zip” to reveal a folder named “Demo Files” containing a Keynote file named, “Wind Energy in America.key.” We’ll use this to demonstrate how quick and easy this process is once it is installed.

Before turning on your screen recording software (e.g. ScreenFlow), it’s usually a good idea to audition the narration and make any necessary changes to the presenter notes such as adding speech commands (e.g. [[slnc nnn]], and using phonetic misspelling and extra punctuation to achieve a more natural sounding narration.

4) To see how easy this will be in future, simply audition the presentation by opening this demo Keynote slideshow and then selecting “Narrate Frontmost Presentation” from Keynote scripts in the Scripts Menu as follows:




Select  Present From Script Menu






Note that Keynote Scripts are only available when Keynote is frontmost and there is at least one presentation open. Should you wish to change any of the default behaviors of this workflow, simply hold down the Option key while selecting this workflow. This will present the workflow in Automator allowing to to change any or all of the defaults. Here’s how that will appear:



Automator Workflow


Those are the essentials. From this point forward, simply start your screen recording software first and then, with Keynote in the forefront, select the Record Frontmost Presentation from the script menu, sit back, relax and listen to the narrator recite your script. When recording is done, just trim the beginning and end and you are done.

To understand
how this workflow was developed, read all about it on the iworksautomation site. Note the role of commands such as such as [[adv]]. In addition to that, you may also use the techniques described in the earlier post such as phonetic misspelling and the other text-to-speech commands that can make the narrator seem more human. The Apple document, “Techniques for Customizing Synthesized Speech” (2006) is the most complete and recent reference on the subject of improving the realism of synthesized speech that I can find. It was written for API developers, not content developers so you’ll need to read selectively.

In addition to doing screencasts for your own eBooks and eTextbooks, you might also consider student assignments that call for Keynote presentations with presenter notes. Once students have turned those presentations in and let you know which of the many MacOS X voices they prefer, a student authored eBook or eTextbook would be easily assembled from the resulting screencast videos.

Saturday, June 21, 2014

Recording the Self-presenting Presentation

If you watched the screencast video in my last post, "Free Voice Talent ..." you may have noticed that I used a TTS voice for parts of the presentation. What is not evident is the fact that this recorded presentation was entirely automatic, including the human and TTS narration. It was a self-presenting presentation.

Here's how it is done using only ScreenFlow, Keynote, Applescript and Apple's built-in text to speech (TTS) capabilities.

We start by creating a Keynote presentation and making the presenter's notes visible with View > Show Presenter Notes which looks like this:

CreatePresentationWithNotes

Next, we create a slide in the Keynote deck using the presenter notes to script the narration for that slide. Repeat until you have laid out all visual and narrative aspects of your message.

At this point, we need to develop an Applescript application that will launch Keynote and cause the presenter notes to be read with a TTS voice. So, go to /Applications/Utilities, open Applescript Editor. Copy and paste in the following script:

property defaultSlideDuraton : 2
property pauseBeforeSpeaking : 1.5
property stoppingStatement : "[[slnc 1000]] Stopping presentation."

tell application "Keynote"
activate
try
if not (exists document 1) then error number -128

if playing is true then stop the front document

tell document 1
set the slideCount to the count of slides
start from first slide
end tell
repeat with i from 1 to the slideCount
if playing is false then
my speakSlideNotes(stoppingStatement)
error number -128
end if
tell document 1
set thisSlidesPresenterNotes to presenter notes of slide i
end tell
if thisSlidesPresenterNotes is "" then
delay defaultSlideDuraton
else
if pauseBeforeSpeaking is not 0 then
delay pauseBeforeSpeaking
end if
my speakSlideNotes(thisSlidesPresenterNotes)
end if
if i is slideCount then
exit repeat
else
if playing is false then
my speakSlideNotes(stoppingStatement)
error number -128
end if
show next
end if
end repeat

tell document 1 to stop
on error errorMessage number errorNumber
if errorNumber is not -128 then
display alert (("ERROR " & errorNumber) as string) message errorMessage
end if
end try
end tell

on speakSlideNotes(thisSlidesPresenterNotes)
if thisSlidesPresenterNotes begins with "[voice:" then
set x to the offset of "]" in thisSlidesPresenterNotes
set textToSay to text from (x + 1) to -1 of thisSlidesPresenterNotes
set thisVoiceName to text 8 thru (x - 1) of thisSlidesPresenterNotes
say textToSay using thisVoiceName
else
say thisSlidesPresenterNotes -- with waiting until completion
end if
end speakSlideNotes

Save it as a script so that you can use it at any time in the future.

At this point, you could set ScreenFlow to record and then Run the script with your Keynote presentation open and in the forefront. The default system voice will read each slide as it is presented. The presentation will automatically exit after the last slide has been narrated so you can stop the ScreenFlow recording, trim the ends in ScreenFlow and be done.

However and as we discussed in the last post, you may not be satisfied with such a plain vanilla rendition. Thus, we get into a few of the more sophisticated techniques that apply to this kind of work. You should already know about auditioning, using phonetic mis-spelling, punctuation and embedded speech commands to create a more human-sounding rendition of text. If not, review the "Free Voice Talent ..." post for the details.

To these we will add two new techniques: 1) Adjusting for video and animation. 2) Selecting voices on a per slide basis.

Adjusting for video and animation. If your presentation includes a video clip as the screencast referenced here does, you'll need to build in a delay that is equal to the duration of the video. This can be done with the embedded speech command [[slnc nnn]] where nnn is the duration of the embedded video in milliseconds. The following screenshot is of a slide containing a video with a duration of 9 minutes 16.033 seconds. That converts to 556,000 milliseconds. YMMV (Your math may vary).

DelayEqualToVideoDuration

This also applies to any transitions or animations that you may have included. Simply run the script without recording to audition the slide making adjustments to the placement and duration of the silence command. This command, as you learned from the last post, is also very useful in creating appropriate pauses between paragraphs.

Selecting voices on a per slide basis. Since there is no embedded speech command that enables selecting which voice is operative, we do this via the speakSlideNotes function in the script. This special command must be the first text encountered in the presenter notes (no leading spaces, please). Inserting [voice:Daniel] as the first element in the presenter notes for a slide will cause that voice to be used - no need to change the system default. Note the single (not double) square brackets. This is especially valuable as you may use an alternating male and a female voice to add narrative interest to your screencast. The following screenshot illustrates the use of this special command.

SelectingVoices

So that's all there is to it. Create a slide deck in Keynote, add presenters notes, audition and adjust the text of the presenter notes with the provided Applescript until the desired presentation with narration is achieved. Then, launch ScreenFlow to record the self-presenting presentation, execute the script, stop recording, trim and export.

Because voice quality and variety is so easily assured with a single take, this could be called Rapid Screencast Development (RSD).