class BaiduAiPlatform::VoiceSynthesizer

Public Class Methods

play_ai_voice(cuid, text) click to toggle source
# File lib/baidu_ai_platform/voice_synthesis/voice_synthesizer.rb, line 9
def self.play_ai_voice cuid, text
  file_name = get_baidu_ai_voice cuid, text
  system "#{play_command} #{file_name}"
  File.delete file_name
end

Private Class Methods

baidu_ai_voice(cuid, text, spd = 5, pit = 5) click to toggle source
# File lib/baidu_ai_platform/voice_synthesis/voice_synthesizer.rb, line 32
def self.baidu_ai_voice(cuid, text, spd = 5, pit = 5)
  uri = URI.parse("http://tsn.baidu.com/text2audio?")
  if BaiduAiPlatform.debug_mode && BaiduAiPlatform.logger
    BaiduAiPlatform.logger.debug "Requesting uri #{uri}..."
  end
  req = Net::HTTP::Post.new(uri)
  res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    req.set_form_data({
        "lan" => "zh",
        "ctp" => "1",
        "cuid" => cuid,
        "tok" => BaiduAiPlatform::AccessTokenManager.instance.get_access_token,
        "tex" => text,
        "spd" => spd,
        "pit" => pit
    })
    http.request req
  end
end
get_baidu_ai_voice(cuid, text) click to toggle source
# File lib/baidu_ai_platform/voice_synthesis/voice_synthesizer.rb, line 19
def self.get_baidu_ai_voice cuid, text
  response = baidu_ai_voice cuid, text
  time = Time.now.strftime '%Y%m%d%H%M%S' + rand(10).to_s
  if !File.directory?@voice_dir
    Dir::mkdir(@voice_dir)
  end
  file_name = @voice_dir + time + ".mp3"
  voice = File.new(file_name, "w+")
  voice.puts(response.body)
  voice.close
  file_name
end
play_command() click to toggle source
# File lib/baidu_ai_platform/voice_synthesis/voice_synthesizer.rb, line 52
def self.play_command
  if BaiduAiPlatform::OS.mac?
    return 'afplay'
  end
  'play'
end