class ESpeak::Speech
Attributes
options[R]
text[R]
Public Class Methods
new(text, options={})
click to toggle source
filename - The file that will be generated options - Posible key, values
:voice - use voice file of this name from espeak-data/voices. ie 'en', 'de', ... :pitch - pitch adjustment, 0 to 99 :speed - speed in words per minute, 80 to 370 :capital - increase emphasis of capitalized letters by raising pitch by this amount no range given in man but good range is 10-40 to start :quiet - remove printing to stdout. Affects only lame (default false)
# File lib/espeak/speech.rb, line 14 def initialize(text, options={}) @text = text @options = options end
Public Instance Methods
bytes()
click to toggle source
Returns mp3 file bytes as a result of Text-To-Speech conversion.
# File lib/espeak/speech.rb, line 43 def bytes() speech = bytes_wav res = IO.popen(std_lame_command(command_options), 'r+') do |process| process.write(speech) process.close_write process.read end res.to_s end
bytes_wav()
click to toggle source
Returns wav file bytes as a result of Text-To-Speech conversion.
# File lib/espeak/speech.rb, line 56 def bytes_wav() IO.popen(espeak_command(command_options, "--stdout"), 'r') do |process| process.read end end
save(filename)
click to toggle source
Generates mp3 file as a result of Text-To-Speech conversion.
# File lib/espeak/speech.rb, line 30 def save(filename) speech = bytes_wav res = IO.popen(lame_command(filename, command_options), 'r+') do |process| process.write(speech) process.close_write process.read end res.to_s end
speak()
click to toggle source
Speaks text
# File lib/espeak/speech.rb, line 21 def speak IO.popen(espeak_command(command_options), 'r') do |process| process.read end end
Private Instance Methods
command_options()
click to toggle source
# File lib/espeak/speech.rb, line 64 def command_options default_options.merge(symbolize_keys(options)) end
default_options()
click to toggle source
Although espeak itself has default options I'm defining them here for easier generating command (with simple hash.merge)
# File lib/espeak/speech.rb, line 72 def default_options { :voice => 'en', :pitch => 50, :speed => 170, :capital => 1, :quiet => true } end
espeak_command(options, flags="")
click to toggle source
# File lib/espeak/speech.rb, line 80 def espeak_command(options, flags="") ['espeak', "#{@text}", "#{flags}", "-v#{options[:voice]}", "-p#{options[:pitch]}", "-k#{options[:capital]}", "-s#{options[:speed]}"] end
lame_command(filename, options)
click to toggle source
# File lib/espeak/speech.rb, line 88 def lame_command(filename, options) ['lame', '-V2', '-', "#{filename}", "#{'--quiet' if options[:quiet] == true}"] end
std_lame_command(options)
click to toggle source
# File lib/espeak/speech.rb, line 84 def std_lame_command(options) lame_command("-", options) end
symbolize_keys(hash)
click to toggle source
# File lib/espeak/speech.rb, line 92 def symbolize_keys(hash) hash.inject({}) do |options, (key, value)| options[(key.to_sym rescue key) || key] = value options end end