いつかMP3のLameを並列化してみたいという目標があります。アルゴリズム的にもファイル構造的にも、絶対できないわけない気がするんですよね〜
Conversation
Notices
-
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 00:24:42 JST 斎藤ただし -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 00:24:40 JST ikeji @tadd Rubyを使うまでもなく、ddで切り出してlameで圧縮してcatで結合をgnu parallelでやったらシェルスクリプトでできる? -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 00:24:41 JST 斎藤ただし 例: まずファイルを16分割してプロセスを16個立ち上げます。
-
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 00:24:41 JST 斎藤ただし という感じの嘘みたいな話を支援する嘘みたいなgemがあって、結構便利。
https://github.com/grosser/parallel -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 00:27:49 JST ikeji @tadd なるほど、やりたい事的に、結合もddでやらないといけないのか。 In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 00:54:09 JST ikeji @tadd 圧縮後のファイルサイズが決まってたらいいんだけどね。 In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 00:54:10 JST 斎藤ただし @ikeji いまさっき話してた方はこういうのを使っていた
https://github.com/inhabitedtype/bigstringaf
https://ocaml.org/manual/5.2/api/Unix.html#VALmap_fileIn conversation permalink Attachments
-
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 01:06:16 JST ikeji @tadd 試してみるか。 In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 01:06:17 JST 斎藤ただし @ikeji 固定ビットレートってそうじゃないのかな?
In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 01:19:08 JST 斎藤ただし @ikeji 俺もちょっと徹夜で寝るの、試しとくわ……( ˘ω˘)スヤァ
In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 01:19:08 JST ikeji @tadd 同じっぽいな。
maomao% cat hoge.py import wave import random import struct sample_len = 44100*10 samples = [random.randint(-32768, 32767) for _ in range(sample_len)] with wave.open('a.wav', 'w') as w: w.setparams((1, 2, 44100, sample_len, 'NONE', 'not compressed')) for s in samples: w.writeframes(struct.pack("<h", s)) with wave.open('b.wav', 'w') as w: w.setparams((1, 2, 44100, sample_len, 'NONE', 'not compressed')) for s in samples: w.writeframes(struct.pack("<h", 0)) maomao% python3 hoge.py maomao% for i in a b; do; lame $i.wav $i.mp3; done LAME 3.100 64bits (http://lame.sf.net) Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz Encoding a.wav to a.mp3 Encoding as 44.1 kHz single-ch MPEG-1 Layer III (11x) 64 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 384/384 (100%)| 0:00/ 0:00| 0:00/ 0:00| 181.44x| 0:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ kbps mono % long switch short % 64.0 100.0 99.2 0.5 0.3 Writing LAME Tag...done ReplayGain: -11.5dB LAME 3.100 64bits (http://lame.sf.net) Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz Encoding b.wav to b.mp3 Encoding as 44.1 kHz single-ch MPEG-1 Layer III (11x) 64 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 384/384 (100%)| 0:00/ 0:00| 0:00/ 0:00| 210.12x| 0:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ kbps mono % long % 64.0 100.0 100.0 Writing LAME Tag...done ReplayGain: +64.8dB WARNING: ReplayGain exceeds the -51dB to +51dB range. Such a result is too high to be stored in the header. maomao% ls -al 合計 1896K drwxr-xr-x 1 ikeji ikeji 54 8月 18 01:17 . drwxr-xr-x 1 ikeji ikeji 428 8月 18 01:10 .. -rw-r--r-- 1 ikeji ikeji 80456 8月 18 01:18 a.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8月 18 01:17 a.wav -rw-r--r-- 1 ikeji ikeji 80456 8月 18 01:18 b.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8月 18 01:17 b.wav -rw-r--r-- 1 ikeji ikeji 475 8月 18 01:16 hoge.py maomao%In conversation permalink Attachments
-
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 01:28:23 JST ikeji - maomaoって誰?
- 蛇悪な敵性言語ですね?(うそです)
AIさんに聞いたら、これ出してきた。
ちなVBR
maomao% for i in a b; do; lame -v $i.wav $i.v.mp3; done LAME 3.100 64bits (http://lame.sf.net) Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz Encoding a.wav to a.v.mp3 Encoding as 44.1 kHz single-ch MPEG-1 Layer III VBR(q=4) Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 384/384 (100%)| 0:00/ 0:00| 0:00/ 0:00| 129.54x| 0:00 32 [ 0] 40 [ 0] 48 [ 0] 56 [ 0] 64 [173] ****************************************************************************************************************************************************************** 80 [207] ************************************************************************************************************************************************************************************************* 96 [ 3] *** 112 [ 0] 128 [ 0] 160 [ 0] 192 [ 0] 224 [ 1] * 256 [ 0] 320 [ 0] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- kbps mono % long switch short % 73.3 100.0 99.2 0.5 0.3 Writing LAME Tag...done ReplayGain: -11.9dB LAME 3.100 64bits (http://lame.sf.net) Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz Encoding b.wav to b.v.mp3 Encoding as 44.1 kHz single-ch MPEG-1 Layer III VBR(q=4) Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 384/384 (100%)| 0:00/ 0:00| 0:00/ 0:00| 551.43x| 0:00 32 [384] ************************************************************************************************************************************************************************************************* 40 [ 0] 48 [ 0] 56 [ 0] 64 [ 0] 80 [ 0] 96 [ 0] 112 [ 0] 128 [ 0] 160 [ 0] 192 [ 0] 224 [ 0] 256 [ 0] 320 [ 0] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- kbps mono % long % 32.0 100.0 100.0 Writing LAME Tag...done ReplayGain: +64.8dB WARNING: ReplayGain exceeds the -51dB to +51dB range. Such a result is too high to be stored in the header. maomao% ls -al # # 2068K drwxr-xr-x 1 ikeji ikeji 90 8# 18 01:26 . drwxr-xr-x 1 ikeji ikeji 428 8# 18 01:10 .. -rw-r--r-- 1 ikeji ikeji 40353 8# 18 01:25 .mp3 -rw-r--r-- 1 ikeji ikeji 80456 8# 18 01:18 a.mp3 -rw-r--r-- 1 ikeji ikeji 92098 8# 18 01:26 a.v.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8# 18 01:17 a.wav -rw-r--r-- 1 ikeji ikeji 80456 8# 18 01:18 b.mp3 -rw-r--r-- 1 ikeji ikeji 40353 8# 18 01:26 b.v.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8# 18 01:17 b.wav -rw-r--r-- 1 ikeji ikeji 475 8# 18 01:16 hoge.py maomao%In conversation permalink Attachments
-
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 01:28:24 JST 斎藤ただし @ikeji よかった。ところで
- maomaoって誰?
- 蛇悪な敵性言語ですね?(うそです)In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 15:09:54 JST ikeji @tadd 同じじゃないよ、B(無音)は半分のサイズになったよ。 In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 15:09:55 JST 斎藤ただし @ikeji なるほど、脱税が得意なマシン……。
それはそうとして、VBRなのに違う音源の結果が何故同じサイズ!?と思ったら、そりゃ単なる乱数(ホワイトノイズ)じゃダメそうだ。何秒目取ってもデータの密度が同じになっちゃうのは、乱数振りなおしても変わらないよね。
お互いに周期変えたsinで音量に窓関数を掛ける、とかしたら多分差が出ると思うよー。
あるいは単純に、片方の乱数の最大値をすごく小さくしてみる、でもよさそう。In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Sunday, 18-Aug-2024 22:48:43 JST ikeji エントロピーという意味では、gzipするとこんな感じ。
maomao% for i in a b; do; gzip -k $i.wav; done maomao% ls -l 合計 2892K -rw-r--r-- 1 ikeji ikeji 80456 8月 18 01:18 a.mp3 -rw-r--r-- 1 ikeji ikeji 92098 8月 18 01:26 a.v.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8月 18 01:17 a.wav -rw-r--r-- 1 ikeji ikeji 882203 8月 18 01:17 a.wav.gz -rw-r--r-- 1 ikeji ikeji 80456 8月 18 01:18 b.mp3 -rw-r--r-- 1 ikeji ikeji 40353 8月 18 01:26 b.v.mp3 -rw-r--r-- 1 ikeji ikeji 882044 8月 18 01:17 b.wav -rw-r--r-- 1 ikeji ikeji 945 8月 18 01:17 b.wav.gz -rw-r--r-- 1 ikeji ikeji 475 8月 18 01:16 hoge.pyIn conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Sunday, 18-Aug-2024 22:48:44 JST 斎藤ただし @ikeji うぉ、見間違えてたスマソ!
In conversation permalink
-