3の倍数と3の付く数字のときだけアホになる Ruby スクリプト

忙しいときに限ってこういうことがやりたくなります・・・。mac osx 専用です&99までしか対応してません。あとコード、動作ともにもっさりしてます。もっとスピードあげられればいいんですが。わかっているのは同じ声が連続するときはひとつの引数にして 'say' コマンドに渡した方がすっきりするということです。が、やってません。どなたかすっきりとしたものにして頂けると嬉しいです。

#!/usr/bin/env ruby

normal_voice = {
  1 => "iche", 2 => "ne",    3 => "sun",
  4 => "yon" , 5 => "go",    6 => "lock",
  7 => "nana", 8 => "huchi", 9 => "q",
  10 => "juu"
}

aho_voice = {
  1 => "echi", 2 => "neee",   3 => "shuun",
  4 => "shee", 5 => "go",     6 => "rock",
  7 => "nana", 8 => "hyachi", 9 => "q",
  10 => "juuu"
}

(1..40).each do |n|
  puts "#{n}"
  if n <= 10
    command = (n.to_s =~ /3/ || n % 3 == 0)? 
    "say -v Princess #{aho_voice[n]}" :
      "say -v Ralph #{normal_voice[n]}"
  elsif n <= 19
    x = (n / 10).round; y = n % 10
    command = (n.to_s =~ /3/ || n % 3 == 0)? 
    "say -v Princess #{aho_voice[10]} #{aho_voice[y]}" : 
      "say -v Ralph '#{normal_voice[10]} #{normal_voice[y]}'"
  elsif n <= 99
    x = (n / 10).round; y = n % 10
    command = (n.to_s =~ /3/ || n % 3 == 0)? 
    "say -v Princess #{aho_voice[x]} #{aho_voice[10]} #{aho_voice[y]}" : 
      "say -v Ralph '#{normal_voice[x]} #{aho_voice[10]} #{normal_voice[y]}'"
  else
    command = "say -v Ralph sore deka sugi"
    exit
  end
  system(command)
end

元ネタはいわずもがな世界のナベアツです。ささやかなオマージュとして捧げます。