본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다.
------
1 초 동안 소리의 세기(강약)를 측정하는 횟수를 h
(헤르츠(Hz) 단위는 1초에 몇 번? 이라는 횟수를 의미한다. 예를 들어 44.1KHz 는 1 초에 44100 번 이라는 횟수를 의미한다.)
소리의 세기를 측정한 한 값을 저장할 때 사용하는 비트 수를 b
(16 비트를 사용하면 65536 가지 중 한 가지로 그 때의 소리 세기를 저장할 수 있다. 보통은 -32768 ~ +32767 범위로 저장한다.)
왼쪽-오른쪽 등 소리를 녹음할 채널(트랙)의 개수를 c
(mono 는 1개, stereo 는 왼쪽-오른쪽 2개의 트랙으로 소리를 저장한다는 것을 의미한다.)
녹음할 시간(초) s가 주어질 때,
소리를 녹음하기 위해서 필요한 소리 데이터 저장 용량을 계산해보자.
참고
아날로그 파동인 소리를 디지털 컴퓨터에 저장하고 처리하기 위해서는
디지털 데이터로 바꾸어 저장해야 한다.
시간에 따라 변화하는 소리의 세기를, 마이크를 통해 1 초에 수 만 번 이상 측정하고
그렇게 측정한 값을, 적당한 범위의 정수값으로 변환해서 저장한다.
측정한 값을 저장할 때 사용하는 비트의 개수에 따라서, 녹음되는 소리의 세세한 정도를 설정할 수 있고,
여러 개의 마이크를 사용해서 여러 채널로 저장할 수 있기 때문에, 좌우(스테레오) 채널로 따로 저장하면 2배의 저장 공간이 필요하고,
(**5.1 채널 스피커는 앞-가운데, 앞-왼쪽, 앞-오른쪽, 뒤-왼쪽, 뒤-오른쪽 5개의 스피커와 저음을 담당하는 우퍼 스피커 1개로 구성된다.)
녹음 시간이 길면 길 수록, 더 많은 저장 용량이 필요하다.
실제로, 일반적인 CD
(44.1KHz, 16bit, stereo) 음질로 1초 동안 저장하려면
44100 * 16 * 2 * 1 bit 의 저장 공간이 필요한데,
44100 * 16 * 2 * 1 / 8 / 1024 / 1024 로 계산하면 0.168MB/1초 정도의 저장 용량이 필요하다.
만약, 약 5분(300초) 동안의 음악을 녹음한다면 약 50MB 정도의 저장 용량이 필요하다.
(옛날 음악 CD 한 장에 저장할 수 있는 최대 곡의 수가 12~14곡인 이유는? CD 한 장의 저장 용량이 600~700MB 이기 때문이다.)
(저장 용량이 매우 크기 때문에, mp3 와 같은 음악 파일이나 mpg, avi 와 같은 동영상 파일에는 소리 데이터가 압축해서 저장된다.)
이렇게 녹음하는 방식을 PCM(Pulse Code Modulation) 방법이라고 한다.
아날로그 파동(Pulse)을 코드(Code)로 변환(Modulation)하는 방법인 것이다.
압축하지 않은 소리 데이터를 저장하는 대표적인 파일로 *.wav 가 있다.
(*기본적으로는 비압축이지만 데이터를 압축해서 저장할 수도 있다.)
**
8 bit(비트) = 1 byte(바이트)
1024 byte(2
10 byte) = 1 KB(킬로 바이트)
1024 KB(2
10 KB) = 1 MB(메가 바이트)
1024 MB(2
10 MB) = 1 GB(기가 바이트)
1024 GB(2
10 GB) = 1 TB(테라 바이트)