WaveFile gemでサンプルの値を小数にする
code:ruby
reader = WaveFile::Reader.new(audio)
buf = reader.to_enum(:each_buffer).first
buf.samples.join(" ")
# => 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 1 0 0 -1 0 -1 0 0 -1 0 -1 -1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 -1 -1 -1 0 0 0 -1 -1 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 -2 -2 -1 -2 -2 0 0 1 0 1 0 -1 0 0 0 0 1 2 2 3 3 2 0 0 0 -2 0 0 0 1 0 0 0 1 1 1 -1 1 1 -1 -1 -2 0 0 -1 -1 0 -1 0 -1 0 0 1 0 -2 -1 -1 0 0 0 1 -1 -1 -1 -1 0 0 0 -2 -1 -1 -1 -1 -1 -2 -2 0 0 2 2 1 1 -1 -2 0 1 1 1 0 0 0 -1 -1 0 1 0 -2 -1 -2 -1 -1 1 1 1 2 1 1 0 0 -2 1 -1 -3 0 1 0 -1 -2 -4 -3 -3 -3 0 1 2 1 -2 -4 -1 -2 -2 1 4 3 1 2 1 -2 -2 -1 2 0 -4 -5 -6 -7 -2 -2 -3 2 2 2 -1 0 1 0 -2 2 0 1 4 3 4 3 -5 -4 -2 2 2 3 4 2 6 3 5 7 6 5 -3 -1 -2 0 -3 -3 1 -4 -1 -7 0 3 4 -2 -3 -4 -4 1 -7 -2 -7 -6 -6 -10 -4 -2 -1 -1 -2 2 1 4 1 5 9 8 0 -3 1 0 7 2 4 -6 4 -17 62 138 34 20 -2 1 22 -10 3 -44 -108 -115 -75 -19 97 151 119 79 61 72 59 -1 -27 6 38 63 100 140 126 154 167 158 135 87 80 87 77 25 -24 -20 -4 -53 -105 -79 -84 -120 -171 -194 -220 -198 -175 -125 -108 -141 -147 -147 -96 -76 -140 -116 -135 -145 -181 -219 -170 -156 -212 -260 -253 -167 -89 -24 4 7 -17 -35 -63 -83 -53 -12 -8 6 27 19 0 -15 -11 -6 -28 -20 -23 -56 -49 -19 -3 -25 -73 -92 -100 -91 -60 -12 -23 -67 -84 -113 -144 -198 -221 -243 -277 -254 -213 -189 -145 -67 -35 -44 -44 -38 -27 -36 -58 -63 -16 44 74 68 23 -58 -101 -39 45 86 98 108 158 300 438 490 517 496 482 510 548 562 558 554 527 525 513 466 396 314 278 268 273 251 220 187 165 140 120 97 21 -31 -31 -35 -48 -70 -85 -119 -168 -220 -214 -181 -158 -170 ...
whisper.cppでは小数列として渡すことになっているので小数にしたい。ReaderにFormatオブジェクトを明示的に渡してやればいい。
code:ruby
reader = WaveFile::Reader.new(audio, WaveFile::Format.new(:mono, :float, 16000))
buf = reader.to_enum(:each_buffer).first
buf.samples.join(" ")
# => 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -3.0517578125e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 0.0 0.0 3.0517578125e-05 0.0 0.0 -3.0517578125e-05 0.0 -3.0517578125e-05 0.0 0.0 -3.0517578125e-05 0.0 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 0.0 0.0 0.0 0.0 3.0517578125e-05 0.0 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 0.0 0.0 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 3.0517578125e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -6.103515625e-05 -6.103515625e-05 -3.0517578125e-05 -6.103515625e-05 -6.103515625e-05 0.0 0.0 3.0517578125e-05 0.0 3.0517578125e-05 0.0 -3.0517578125e-05 0.0 0.0 0.0 0.0 3.0517578125e-05 6.103515625e-05 6.103515625e-05 9.1552734375e-05 9.1552734375e-05 6.103515625e-05 0.0 0.0 0.0 -6.103515625e-05 0.0 0.0 0.0 3.0517578125e-05 0.0 0.0 0.0 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 -3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -6.103515625e-05 0.0 0.0 -3.0517578125e-05 -3.0517578125e-05 0.0 -3.0517578125e-05 0.0 -3.0517578125e-05 0.0 0.0 3.0517578125e-05 0.0 -6.103515625e-05 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 0.0 0.0 0.0 -6.103515625e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -3.0517578125e-05 -6.103515625e-05 -6.103515625e-05 0.0 0.0 6.103515625e-05 6.103515625e-05 3.0517578125e-05 3.0517578125e-05 -3.0517578125e-05 -6.103515625e-05 0.0 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 0.0 0.0 0.0 -3.0517578125e-05 -3.0517578125e-05 0.0 3.0517578125e-05 0.0 -6.103515625e-05 -3.0517578125e-05 -6.103515625e-05 -3.0517578125e-05 -3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 3.0517578125e-05 6.103515625e-05 3.0517578125e-05 3.0517578125e-05 0.0 0.0 -6.103515625e-05 3.0517578125e-05 -3.0517578125e-05 -9.1552734375e-05 0.0 3.0517578125e-05 0.0 -3.0517578125e-05 -6.103515625e-05 -0.0001220703125 -9.1552734375e-05 -9.1552734375e-05 -9.1552734375e-05 0.0 3.0517578125e-05 6.103515625e-05 3.0517578125e-05 -6.103515625e-05 -0.0001220703125 -3.0517578125e-05 -6.103515625e-05 -6.103515625e-05 3.0517578125e-05 0.0001220703125 9.1552734375e-05 3.0517578125e-05 6.103515625e-05 3.0517578125e-05 -6.103515625e-05 -6.103515625e-05 -3.0517578125e-05 6.103515625e-05 0.0 -0.0001220703125 -0.000152587890625 -0.00018310546875 -0.000213623046875 -6.103515625e-05 -6.103515625e-05 -9.1552734375e-05 6.103515625e-05 6.103515625e-05 6.103515625e-05 -3.0517578125e-05 0.0 3.0517578125e-05 0.0 -6.103515625e-05 6.103515625e-05 0.0 3.0517578125e-05 0.0001220703125 9.1552734375e-05 0.0001220703125 9.1552734375e-05 -0.000152587890625 -0.0001220703125 -6.103515625e-05 6.103515625e-05 6.103515625e-05 9.1552734375e-05 0.0001220703125 6.103515625e-05 0.00018310546875 9.1552734375e-05 0.000152587890625 0.000213623046875 0.00018310546875 0.000152587890625 -9.1552734375e-05 -3.0517578125e-05 -6.103515625e-05 0.0 -9.1552734375e-05