class AudioBookCreator::Speaker

Attributes

book_def[RW]
speaker_def[RW]

Public Class Methods

new(speaker_def, book_def) click to toggle source
# File lib/audio_book_creator/speaker.rb, line 6
def initialize(speaker_def, book_def)
  @speaker_def = speaker_def
  @book_def = book_def
end

Public Instance Methods

chapter_sound_filename(chapter) click to toggle source
# File lib/audio_book_creator/speaker.rb, line 31
def chapter_sound_filename(chapter)
  "#{base_dir}/#{chapter.filename}.m4a"
end
chapter_text_filename(chapter) click to toggle source
# File lib/audio_book_creator/speaker.rb, line 27
def chapter_text_filename(chapter)
  "#{base_dir}/#{chapter.filename}.txt"
end
make_directory_structure() click to toggle source
# File lib/audio_book_creator/speaker.rb, line 11
def make_directory_structure
  FileUtils.mkdir(base_dir) unless File.exist?(base_dir)
end
say(chapter) click to toggle source
# File lib/audio_book_creator/speaker.rb, line 15
def say(chapter)
  raise "Empty Chapter" if chapter.empty?
  text_filename = chapter_text_filename(chapter)
  sound_filename = chapter_sound_filename(chapter)

  AudioBookCreator.optionally_write(text_filename, force) { chapter.to_s }
  AudioBookCreator.optionally_run(sound_filename, force) do
    ["say", params: params(text_filename, sound_filename)]
  end
  SpokenChapter.new(chapter.title, sound_filename)
end

Private Instance Methods

base_dir() click to toggle source
# File lib/audio_book_creator/speaker.rb, line 37
def base_dir
  book_def.base_dir
end
force() click to toggle source
# File lib/audio_book_creator/speaker.rb, line 41
def force
  speaker_def.regen_audio
end
params(text_filename, sound_filename) click to toggle source
# File lib/audio_book_creator/speaker.rb, line 45
def params(text_filename, sound_filename)
  {
    "-v" => speaker_def.voice,
    "-r" => speaker_def.rate,
    "-f" => text_filename,
    "-o" => sound_filename,
  }
end