เดนเดฒเตเดพ! เดเดจเตเดฑเต เดเดฆเตเดฏ เดฒเตเดเดจ เดชเดฐเดฎเตเดชเดฐเดเตพ เดเดฎเตเดเต/เดเดกเดฟเดฏเต เดเดเดชเตเดฐเดทเตป, JPEG (เดเดฎเตเดเต), WAVE (เดถเดฌเตโเดฆเด) เดชเตเดฒเตเดณเตเดณ เดธเตเดฑเตเดฑเตเดฑเตเดเต เดฐเตเดคเดฟเดเตพ เดชเด เดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเด, เดเตเดเดพเดคเต เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เด เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเตพ (.jpg, .wav) เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเด เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเด. เด เดญเดพเดเดคเตเดคเต เดจเดฎเตเดฎเตพ WAVE เดจเตเดเตเดเตเด.
เดเดฅ
เดเดฐเต เดเดกเดฟเดฏเต เดธเตเดเตเดฐเตเดฎเดฟเดจเตเดฑเต เดฑเตเดเตเดเตเตผเดกเดฟเดเดเต เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดฃเตเดเตเดฏเตเดจเตผ เดซเดฏเตฝ เดซเตเตผเดฎเดพเดฑเตเดฑเดพเดฃเต WAVE (Waveform Audio File Format). เดเดเดชเตเดฐเดธเต เดเตเดฏเตเดฏเดพเดคเตเดค เดชเตพเดธเต เดเตเดกเต เดฎเตเดกเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดค เดเดกเดฟเดฏเต เดธเดเดญเดฐเดฟเดเตเดเดพเดจเดพเดฃเต เด เดเดฃเตเดเตเดฏเตโเดจเตผ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต. (เดตเดฟเดเตเดเดฟเดชเตเดกเดฟเดฏเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดคเตเดคเดคเต)
เดฎเตเดเตเดฐเตเดธเตเดซเตเดฑเตเดฑเตเด เดเดฌเดฟเดเดฎเตเดฎเตเด (เด เดเตเดเดพเดฒเดคเตเดคเต เดชเตเดฐเดฎเตเด เดเดเดฟ เดเดฎเตเดชเดจเดฟเดเตพ) RIFF-เดจเตเดชเตเดชเด 1991-เตฝ เดเดคเต เดเดฃเตเดเตเดชเดฟเดเดฟเดเตเดเตเดเดฏเตเด เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต.
เดซเดฏเตฝ เดเดเดจ
เดซเดฏเดฒเดฟเดจเต เดเดฐเต เดนเตเดกเตผ เดญเดพเดเดฎเตเดฃเตเดเต, เดกเดพเดฑเตเดฑ เดคเดจเตเดจเต, เดชเดเตเดทเต เด
เดเดฟเดเตเดเตเดฑเดฟเดชเตเดชเดฟเดฒเตเดฒ. เดคเดฒเดเตเดเตเดเตเดเดฟเดจเต เดเดเต 44 เดฌเตเดฑเตเดฑเตเดเตพ เดญเดพเดฐเดฎเตเดฃเตเดเต.
เดธเดพเดฎเตเดชเดฟเดณเดฟเดฒเต เดฌเดฟเดฑเตเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเด, เดธเดพเดฎเตเดชเดฟเตพ เดจเดฟเดฐเดเตเดเต, เดถเดฌเตโเดฆ เดกเตเดชเตเดคเต เดฎเตเดคเดฒเดพเดฏเดตเดฏเตเดเตเดเตเดณเตเดณ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดนเตเดกเดฑเดฟเตฝ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดธเตเดฃเตเดเต เดเดพเตผเดกเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดตเดฐเดเตเดเตพ. (เดเดฒเตเดฒเดพ เดธเดเดเตเดฏเดพ เดชเดเตเดเดฟเด เดฎเตเดฒเตเดฏเดเตเดเดณเตเด เดฒเดฟเดฑเตเดฑเดฟเตฝ-เดเตปเดกเดฟเดฏเตป เดเตเดฐเดฎเดคเตเดคเดฟเตฝ เดเดดเตเดคเดฃเด)
เดฌเตเดฒเตเดเตเดเต เดชเตเดฐเต
เดฌเตเดฒเตเดเตเดเต เดตเดฒเดฟเดชเตเดชเด (B)
เดตเดฟเดตเดฐเดฃเด/เดเดฆเตเดฆเตเดถเตเดฏเด
เดฎเตเดฒเตเดฏเด (เดเดฟเดฒเตผเดเตเดเต เดเดคเต เดจเดฟเดถเตเดเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดเดเตเดเต เดเดกเดฟ
4
เดเดฐเต เดซเดฏเดฒเดฟเดจเต เดฎเตเดกเดฟเดฏ เดเดฃเตเดเตเดฏเตโเดจเดฑเดพเดฏเดฟ เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต
เดฌเดฟเดเต-เดเตปเดกเดฟเดฏเดจเดฟเตฝ ("RIFF") 0x52494646
เดเดเตเดเต เดตเดฒเดฟเดชเตเดชเด
4
chunkId เดเตเดเดพเดคเต chunkSize เดเดฒเตเดฒเดพเดคเต เดฎเตเดดเตเดตเตป เดซเดฏเดฒเดฟเดจเตเดฑเตเดฏเตเด เดตเดฒเตเดชเตเดชเด
FILE_SIZE - 8
เดซเตเดพเตผเดฎเดพเดฑเตเดฑเต
4
RIFF-เตฝ เดจเดฟเดจเตเดจเต เดคเดฐเด เดจเดฟเตผเดตเดเดจเด
เดฌเดฟเดเต-เดเตปเดกเดฟเดฏเดจเดฟเตฝ 0x57415645 (โWAVEโ)
เดเดชเดเดเตเดเต1เดเดกเดฟ
4
เด
เดคเดฟเดจเดพเตฝ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดจเตเดฑเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดซเดฏเตฝ เดเตเดเตเดคเตฝ เดเดเด เดเดเตเดเตเดเตเดจเตเดจเต
เดฌเดฟเดเต-เดเตปเดกเดฟเดฏเดจเดฟเตฝ ("fmt") 0x666d7420
เดเดชเดญเดพเดเด1 เดตเดฒเดฟเดชเตเดชเด
4
เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดคเดฒเดเตเดเตเดเตเดเต (เดฌเตเดฑเตเดฑเตเดเดณเดฟเตฝ)
16 เดกเดฟเดซเตเตพเดเตเดเดพเดฏเดฟ (เดเดกเดฟเดฏเต เดธเตเดเตเดฐเตเด เดเดเดชเตเดฐเดทเตป เดเดฒเตเดฒเดพเดคเตเดค เดเตเดธเดฟเตฝ)
เดเดกเดฟเดฏเต เดซเตเตผเดฎเดพเดฑเตเดฑเต
2
เดเดกเดฟเดฏเต เดซเตเตผเดฎเดพเดฑเตเดฑเต (เดเดเดชเตเดฐเดทเตป เดฐเตเดคเดฟเดฏเตเดฏเตเด เดเดกเดฟเดฏเต เดกเดพเดฑเตเดฑ เดเดเดจเดฏเตเดฏเตเด เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต)
1 (เดชเดฟโเดธเดฟโเดเดฎเตเดฎเดฟเดจเดพเดฏเดฟ, เด
เดคเดพเดฃเต เดเดเตเดเตพ เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเดจเตเดจเดคเต)
numChannels
2
เดเดพเดจเดฒเตเดเดณเตเดเต เดเดฃเตเดฃเด
1/2, เดเดเตเดเตพ 1 เดเดพเดจเตฝ เดเดเตเดเตเดเตเด (3/4/5/6/7... - เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดเดกเดฟเดฏเต เดเตเดฐเดพเดเตเดเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต 4 เดเตเดตเดพเดกเต เดธเตเดฃเตเดเต เดฎเตเดคเดฒเดพเดฏเดต)
เดฎเดพเดคเตเดเดพ เดจเดฟเดฐเดเตเดเต
4
เดเดกเดฟเดฏเต เดธเดพเดฎเตเดชเดฟเตพ เดจเดฟเดฐเดเตเดเต (เดนเตเตผเดเตเดเตเดธเดฟเตฝ)
เดเดฏเตผเดจเตเดจเดคเต, เดถเดฌเตโเดฆเด เดฎเดฟเดเดเตเดเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เด
เดคเต เดฆเตเตผเดเตเดฏเดฎเตเดณเตเดณ เดเดฐเต เดเดกเดฟเดฏเต เดเตเดฐเดพเดเตเดเต เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเตเดเตเดคเตฝ เดฎเตเดฎเตเดฎเดฑเดฟ เดเดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด, เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจ เดฎเตเดฒเตเดฏเด 48000 เดเดฃเต (เดเดฑเตเดฑเดตเตเด เดธเตเดตเตเดเดพเดฐเตเดฏเดฎเดพเดฏ เดถเดฌเตโเดฆ เดจเดฟเดฒเดตเดพเดฐเด)
เดฌเตเดฑเตเดฑเต เดฑเตเดฑเตเดฑเต
4
เดธเตเดเตเดเตปเดกเดฟเตฝ เดฌเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเด
เดฎเดพเดคเตเดเดพ เดจเดฟเดฐเดเตเดเต numChannels bitsPerSample (เดเตเดเตเดคเตฝ)
เดฌเตเดฒเตเดเตเดเตเด
เดฒเตเตป
2
เดเดฐเต เดธเดพเดฎเตเดชเดฟเดณเดฟเดจเตเดณเตเดณ เดฌเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเด
numChannels * bitsPerSample: 8
เดฌเดฟเดฑเตเดฑเตเดธเตเดชเตเตผเดธเดพเดฎเตเดชเดฟเตพ
2
เดเดฐเต เดธเดพเดฎเตเดชเดฟเดณเดฟเดฒเต เดฌเดฟเดฑเตเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเด (เดเดดเด)
8 เดจเตเดฑเต เดเตเดฃเดฟเดคเดฎเดพเดฏ เดเดคเต เดธเดเดเตเดฏเดฏเตเด. เดเดฏเตผเดจเตเดจ เดธเดเดเตเดฏ, เดฎเดฟเดเดเตเดเดคเตเด เดญเดพเดฐเดฎเตเดณเตเดณเดคเตเดฎเดพเดฏ เดเดกเดฟเดฏเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด; 32 เดฌเดฟเดฑเตเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดจเตเดทเตเดฏเตผเดเตเดเต เดตเตเดฏเดคเตเดฏเดพเดธเดฎเดฟเดฒเตเดฒ
เดเดชเดเดเตเดเต2เดเดกเดฟ
4
เดกเดพเดฑเตเดฑ เดฑเดซเดฑเตปเดธเต เดฎเดพเตผเดเตเดเต (เดเดกเดฟเดฏเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเต เดฎเดฑเตเดฑเต เดคเดฒเดเตเดเตเดเตเดเต เดเดเดเดเตเดเตพ เดเดฃเตเดเดพเดเดพเดฎเตเดจเตเดจเดคเดฟเดจเดพเตฝ)
เดฌเดฟเดเต-เดเตปเดกเดฟเดฏเดจเดฟเตฝ ("เดกเดพเดฑเตเดฑ") 0x64617461
เดเดชเดญเดพเดเด2 เดตเดฒเดฟเดชเตเดชเด
4
เดกเดพเดฑเตเดฑ เดเดฐเดฟเดฏ เดตเดฒเดฟเดชเตเดชเด
int เดฒเต เดกเดพเดฑเตเดฑเดฏเตเดเต เดตเดฒเตเดชเตเดชเด
เดกเดพเดฑเตเดฑ
byteRate * เดเดกเดฟเดฏเต เดฆเตเตผเดเตเดฏเด
เดเดกเดฟเดฏเต เดกเดพเดฑเตเดฑ
?
เดตเตเดตเต เดเดฆเดพเดนเดฐเดฃเด
เดฎเตเดฎเตเดชเดคเตเดคเต เดชเดเตเดเดฟเด เดธเดฟเดฏเดฟเดฒเต เดเดฐเต เดเดเดจเดฏเดฟเดฒเตเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดพเตฝ เดเดจเตเดจเดคเตเดคเต เดจเดฎเตเดฎเตเดเต เดญเดพเดท เดชเตเดคเตเดคเตบ เดเดฃเต. เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด เดเดณเตเดชเตเดชเดฎเตเดณเตเดณ เดเดพเดฐเตเดฏเด เดเดฐเต "เดคเดฐเดเดเด" เดเดชเดฏเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต - เดเดฐเต เดถเดฌเตเดฆ เดเดจเดฑเตเดฑเตเดฑเตผ. เด เดเดพเดธเตเดเตเดเดฟเดจเต เดเดเตเดเตพเดเตเดเต เดเดฏเตผเดจเตเดจ เดฌเตเดฑเตเดฑเตเดฑเตเดฑเตเดฑเตเด เดเดเดชเตเดฐเดทเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดฎเตเดกเตเดฏเตเดณเตเดเตพ เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเดพเด:
# WAV.py
from struct import pack # ะฟะตัะตะฒะพะด py-ะพะฑัะตะบัะพะฒ ะฒ ะฑะฐะทะพะฒัะต ัะธะฟั ะธะท C
from os import urandom # ััะฝะบัะธั ะดะปั ััะตะฝะธั /dev/urandom, ะดะปั windows:
# from random import randint
# urandom = lambda sz: bytes([randint(0, 255) for _ in range(sz)]) # ะปัะผะฑะดะฐ ะฟะพะด windows, ั.ะบ. urandom'ะฐ ะฒ ะฒะธะฝะดะต ะฝะตั
from sys import argv, exit # ะฐัะณัะผะตะฝัั ะบ ะฟัะพะณะต ะธ ะฒัั
ะพะด
if len(argv) != 3: # +1 ะธะผั ัะบัะธะฟัะฐ (-1, ะตัะปะธ ะฑัะดะตัะต ะทะฐะผะพัะฐะถะธะฒะฐัั)
print('Usage: python3 WAV.py [num of samples] [output]')
exit(1)
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เด เดตเดฏเตเดเต เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเดจเตเดธเดฐเดฟเดเตเดเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเดฟเดฒเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดฎเตเดฒเตเดฏเดเตเดเตพ numSamples (เดธเดพเดฎเตเดชเดฟเดณเตเดเดณเตเดเต เดเดฃเตเดฃเด) เดฎเดพเดคเตเดฐเด เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดต เดเตเดเตเดจเตเดคเตเดฑเตเด เดจเดฎเตเดฎเตเดเต เดฌเดนเดณเด เดจเตเดณเตเด.
numSamples = int(argv[1])
output_path = argv[2]
chunkId = b'RIFF'
Format = b'WAVE'
subchunk1ID = b'fmt '
subchunk1Size = b'x10x00x00x00' # 0d16
audioFormat = b'x01x00'
numChannels = b'x02x00' # 2-ั
ะบะฐะฝะฐะปะพะฒ ะฑัะดะตั ะดะพััะฐัะพัะฝะพ (ััะตัะตะพ)
sampleRate = pack('<L', 1000) # 1000 ั
ะฒะฐัะธั, ะฝะพ ะตัะปะธ ะฟะพััะฐะฒะธัั ะฑะพะปััะต, ัะพ ััะผ ะฑัะดะตั ัะปััะตะฝ ะปัััะต. ะก 1000-ั ะพะฝ ะทะฒััะธั, ะบะฐะบ ะฒะตัะตั
bitsPerSample = b'x20x00' # 0d32
byteRate = pack('<L', 1000 * 2 * 4) # sampleRate * numChannels * bitsPerSample / 8 (32 bit sound)
blockAlign = b'x08x00' # numChannels * BPS / 8
subchunk2ID = b'data'
subchunk2Size = pack('<L', numSamples * 2 * 4) # * numChannels * BPS / 8
chunkSize = pack('<L', 36 + numSamples * 2 * 4) # 36 + subchunk2Size
data = urandom(1000 * 2 * 4 * numSamples) # ัะฐะผ ััะผ
เด เดต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดเตเดฐเดฎเดคเตเดคเดฟเตฝ (เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดจเตเดจเดชเตเดฒเต) เดเดดเตเดคเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต:
with open(output_path, 'wb') as fh:
fh.write(chunkId + chunkSize + Format + subchunk1ID +
subchunk1Size + audioFormat + numChannels +
sampleRate + byteRate + blockAlign + bitsPerSample +
subchunk2ID + subchunk2Size + data) # ะทะฐะฟะธััะฒะฐะตะผ
เด
เดเตเดเดจเต, เดคเดฏเตเดฏเดพเดฑเดพเดฃเต. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฎเดพเตปเดกเต เดฒเตเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
python3 WAV.py [num of samples] [output]
เดธเดพเดฎเตเดชเดฟเดณเตเดเดณเตเดเต เดเดฃเตเดฃเด - เดเดฃเตเดฃเด. เดธเดพเดฎเตเดชเดฟเดณเตเดเตพ
output โ เดเดเตเดเตเดชเตเดเตเดเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดค
เดถเดฌเตโเดฆเดฎเตเดณเตเดณ เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดเดกเดฟเดฏเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดฒเดฟเดเตเดเต เดเดคเดพ, เดเดจเตเดจเดพเตฝ เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเดพเดญเดฟเดเตเดเดพเตป เดเดพเตป BPS 1b/s เดเดฏเดฟ เดคเดพเดดเตเดคเตเดคเดฟ เดเดพเดจเดฒเตเดเดณเตเดเต เดเดฃเตเดฃเด 1 เดเดฏเดฟ เดคเดพเดดเตเดคเตเดคเดฟ (32kbs-เตฝ 64-เดฌเดฟเดฑเตเดฑเต เด
เตบ เดเดเดชเตเดฐเดธเต เดเตเดฏเตเดฏเดพเดคเตเดค เดธเตเดฑเตเดฑเตเดฐเดฟเดฏเต เดเดกเดฟเดฏเต เดธเตเดเตเดฐเตเด เดเดชเดฏเตเดเดฟเดเตเดเต, เด
เดคเต เดฎเดพเดฑเดฟ 80M เดถเตเดฆเตเดงเดฎเดพเดฏ .wav เดซเดฏเตฝ, เดเตเดเดพเดคเต 10 เดฎเดพเดคเตเดฐเด):
เดฎเตเดดเตเดตเตป เดเตเดกเตเด (WAV.py) (เดเตเดกเดฟเดจเต เดงเดพเดฐเดพเดณเด เดกเตเดฏเตเดชเตเดฒเดฟเดเตเดเตเดฑเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดฎเตเดฒเตเดฏเดเตเดเดณเตเดฃเตเดเต, เดเดคเตเดฐเต เดธเตเดเตเดเตเดเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต):
from struct import pack # ะฟะตัะตะฒะพะด py-ะพะฑัะตะบัะพะฒ ะฒ ะฑะฐะทะพะฒัะต ัะธะฟั ะธะท C
from os import urandom # ััะฝะบัะธั ะดะปั ััะตะฝะธั /dev/urandom, ะดะปั windows:
# from random import randint
# urandom = lambda sz: bytes([randint(0, 255) for _ in range(sz)]) # ะปัะผะฑะดะฐ ะฟะพะด windows, ั.ะบ. urandom'ะฐ ะฒ ะฒะธะฝะดะต ะฝะตั
from sys import argv, exit # ะฐัะณัะผะตะฝัั ะบ ะฟัะพะณะต ะธ ะฒัั
ะพะด
if len(argv) != 3: # +1 ะธะผั ัะบัะธะฟัะฐ (-1, ะตัะปะธ ะฑัะดะตัะต ะทะฐะผะพัะฐะถะธะฒะฐัั)
print('Usage: python3 WAV.py [num of samples] [output]')
exit(1)
numSamples = int(argv[1])
output_path = argv[2]
chunkId = b'RIFF'
Format = b'WAVE'
subchunk1ID = b'fmt '
subchunk1Size = b'x10x00x00x00' # 0d16
audioFormat = b'x01x00'
numChannels = b'x02x00' # 2-ั
ะบะฐะฝะฐะปะพะฒ ะฑัะดะตั ะดะพััะฐัะพัะฝะพ (ััะตัะตะพ)
sampleRate = pack('<L', 1000) # 1000 ั
ะฒะฐัะธั, ะฝะพ ะผะพะถะฝะพ ะธ ะฑะพะปััะต.
bitsPerSample = b'x20x00' # 0d32
byteRate = pack('<L', 1000 * 2 * 4) # sampleRate * numChannels * bitsPerSample / 8 (32 bit sound)
blockAlign = b'x08x00' # numChannels * BPS / 8
subchunk2ID = b'data'
subchunk2Size = pack('<L', numSamples * 2 * 4) # * numChannels * BPS / 8
chunkSize = pack('<L', 36 + numSamples * 2 * 4) # 36 + subchunk2Size
data = urandom(1000 * 2 * 4 * numSamples) # ัะฐะผ ััะผ
with open(output_path, 'wb') as fh:
fh.write(chunkId + chunkSize + Format + subchunk1ID +
subchunk1Size + audioFormat + numChannels +
sampleRate + byteRate + blockAlign + bitsPerSample +
subchunk2ID + subchunk2Size + data) # ะทะฐะฟะธััะฒะฐะตะผ ะฒ ัะฐะนะป ัะตะทัะปััะฐั
เดซเดฒเด
เด
เดคเดฟเดจเดพเตฝ เดกเดฟเดเดฟเดฑเตเดฑเตฝ เดถเดฌเตเดฆเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเด เด
เดคเต เดเดเตเดเดจเต เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดจเดฟเดเตเดเตพ เดเตเดฑเดเตเดเตเดเตเดเดฟ เดชเด เดฟเดเตเดเต. เด เดชเตเดธเตเดฑเตเดฑเดฟเตฝ เดเดเตเดเตพ เดเดเดชเตเดฐเดทเตป (เดเดกเดฟเดฏเต เดซเตเตผเดฎเดพเดฑเตเดฑเต) เดเดชเดฏเตเดเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดเดฐเตเดจเตเดจเตเด เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, 10 เดฒเตเดเดจเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดจเดฟเดเตเดเตพ เดธเตเดตเดฏเด เดชเตเดคเดฟเดฏ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดชเด เดฟเดเตเดเตเดตเตเดจเตเดจเตเด เดเดคเต เดญเดพเดตเดฟเดฏเดฟเดฒเต เดธเดเดญเดตเดตเดฟเดเดพเดธเดเตเดเดณเดฟเตฝ เดจเดฟเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเดฎเตเดจเตเดจเตเด เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดจเดจเตเดฆเดฟ!
เดเดฑเดตเดฟเดเดเตเดเตพ
เด เดตเดฒเดเดฌเด: www.habr.com