게시판홈 / 유닉스 / sound file format 문의 드립니다..새글쓰기 답글쓰기

저자 sound file format 문의 드립니다..
Anonymous (0)
비회원
  게시일: 2008-11-11 16:54||
업무 때문에 플그램을 하나 짜고 있는데욤..
초짜이다 보니.. 걸리는 부분이 너무 많네요.. ㅡ.ㅡ;;

우선 짤려고 하는 플그램은 audio out 단자와 mic in 단자를 loop back 형태로 연결하고, wav로 된 sine 파형의 sound를 출력, 녹음 하는 것이구요..
녹음 된 sound는 sine파형이 아니겠죠? 때문에 source와의 비교는 안될테고.. sine 파형이니 인접 파형과 비교하는 것입니다.. 적분을 이용하여 면적을 계산하면 될 듯 한데.. 그 방법도 잘 모르겠네요... ㅠ.ㅠ

혹.. 도움 좀 주실수 있으신지요.. 부탁 드리겠습니다.
Anonymous (0)
비회원
  게시일: 2008-11-11 18:39||
출력되는 소리를 그대로 파일로 저장하는 프로그램을 만드시겠단 뜻으로 보이는군요.
케이블 연결을 제외하면 mic in 신호를 그대로 파일로 저장하는 프로그램이네요.

녹음된 데이터는 아날로그가 아니라 샘플링된 디지털 데이터입니다.
아날로그적 의미에서의 sine 파형과는 거리가 멉니다만, 비슷하다고는 볼 수 있습니다.
(44.1k 오디오 기준으로 1/44100초마다 1번씩 사운드 값을 저장한 것이라 보시면 됩니다)

보통 이 raw data를 그냥 사용하는 것이 아니라 FFT라는 cosine 기반의 연산으로 변환해서 처리합니다만, 인접파형과 비교하신다니 정확한 의미를 모르겠네요.

그리고, 연속적인 값이 아닌 디지털 값에서는 적분이 아니라 차분을 사용합니다.
역시 기본적 개념은 비슷합니다만 수학적인 의미에서의 적분과는 차이가 있습니다.
Anonymous (0)
비회원
  게시일: 2008-11-11 20:47||
답글 감사합니다.
일단 지적하신 내용중에.. 녹음된 데이터는 아날로그가 아닌 샘플링된 디지털 데이터라는 말씀은 맞습니다.
그리고 그 녹음이 정상적으로 이루어 졌는지 확인하기 위한 방법으로 적분(말씀하신 차분이겠지요)을 이용하고자 하는 것입니다.
즉, 파형이 생기면 첫번째 파형과 두번째 파형이 동일한가를 비교하고자 하는 것입니다.
이러한 과정을 리눅스에서 파이썬으로 구현하고자 합니다..
좋은 의견 부탁 드리겠습니다.. ㅠ.ㅜ
Anonymous (0)
비회원
  게시일: 2008-11-11 20:49||
원본 파일은 아날로그 파형이고 녹음된 파일은 디지털파형이기때문에 두개의 비교는 거의 불가하다 할 수 있는 상태이기 때문에 일정한 파형이 나타나는 사인파형을 가지고 녹음 된 파일의 파형으로 분석하려는 것이거든요..
음....
플그램을 별로 해 본적이 없는 저로서는.. 머리가 뽀사지고 있습니다.. ㅠ.ㅜ
Anonymous (0)
비회원
  게시일: 2008-11-11 23:35||
1. 출력되기 전의 사운드와 다시 녹음된 사운드를 비교한단 말씀이신가요?

일단 그렇단 가정 하에 말씀드리겠습니다.
원본 "파일"이라고 하시면 아날로그일 수 없을 것 같습니다.
일반적으로 컴퓨터에서 처리되는 데이터 중에 아날로그 데이터는 거의 없다고 봐도 무방합니다.
(대부분의 경우 단지 샘플링 레이트가 높아서 양자화 오류가 적은 것입니다)

2. 순수한 그리고, 학술적 의미에서의 아날로그 vs 디지털 을 비교하려면 PC 환경으로는 불가능하다고 보시면 됩니다.
PC에서 처리하려면 아날로그 데이터를 디지털로 변환을 해서 시작해야 되고, 그러려면 이 비교 자체가 의미가 없으니까요.

3. 보통 오디오/비디오 환경에서 두 데이터의 일치 정도를 확인하는 방법으로 가장 많이 쓰는 방식은 PSNR입니다.
(다른 모델이 많이 제안되지만, 실효성은 없다고 보시면 됩니다)
PSNR이란? 을 보시면 좀 도움이 될 겁니다.

4. Linux + Python : GG

[ 메시지수정: bluenlive 일시: 2008-11-11 23:36 ]
Anonymous (0)
비회원
  게시일: 2008-11-12 11:11||
1. 원본이 파일로 되어 있지 않고, 아날로그로 입력이 되고, 그것을 파일로(디지탈) 저장해서 비교하는 건가요?
원본이 파일로 되어 있지 않으면 저장된 것(녹음 파일)과 비교하기가 어렵습니다. 둘이 동기를 맞추면서 값을 비교해야 하는데, 두개가 동시에 시작한다는 것을 보장하기 어렵습니다.
동기를 맞추기 위해서 아날로그 출력단과 파일로 저장된 데이타를 동시에 건드릴 수 있도록 프로그램을 해야 합니다.
둘다 파일로 되어 있다면 한개씩 돌리면서 데이타 부분만 파일로 뽑아내고 두개의 파일만 비교하면 되겠죠.

2. 파이썬으로 될까요?
오디오 신호 처리인데, 파이썬으로 실시간으로 처리가 될지 의문입니다. 영상보다 데이타량이 적어서 될 수도 있겠지만, C/C++로 해야 되지 않나 싶습니다.

3. 원본과 저장된 것의 비교.
적분은 전혀 필요없고, 단순히 두개의 데이타 부분만(파일 헤더는 빼고)를 뺌셈 연산해서 0이면 같고 틀리면 0이 아닌 값이 나오는 것으로 비교해야 할거 같은데요.
원본이 아날로그라면 녹음된 것을 아날로그로 다시 만들어서 오실로스코프 등으로 찍어 볼 수 밖에 없을 것 같습니다. 이게 실제 가능한지는 안해봐서 모르겠습니다.

4. sine파형 소리
sine파형 소리라는 건 소리의 진폭(음량)이 sine파 형태로 커졌다 작아졌다 한다는 건지, 주파수가 높아졌다 낮아졌다(저음->고음->저음) 한다는 건지요? 둘다 문제는 되지는 않겠습니다만.
그리고 sine파 형태로 찍히는 건 오실로 스코프로 찍어 보신건가요?

결론적으로 신호 처리등의 백그라운드 지식이 필요하기 때문에 초보자가 할 수준의 프로그램은 아닌것 같습니다.
윈도우에서는 비슷한 일은 해봤는데, 리눅스도 크게 다르지는 않을 것 같네요.
wave 파일 포맷, 디지탈 신호 처리등의 기본 개념부터 잡으셔야 할 것 같습니다.
어쨌든 파이썬으로 소스가 공개된 프로그램을 구할 수 있지 않는 한 바로 답이 나올 것 같지는 않습니다.
신호 처리를 해본 경험자가 해도 2주 정도는 잡아야 할 것 같습니다.

www.kldp.org 나 www.devpia.com 에 한번 질문해 보시기 바랍니다.
좋은 결과 있으시기 바랍니다. ㅡㅡ;

ps) PSNR로 두개의 데이타의 동일함을 판단하는 것은 문제가 있는 것 같습니다.
PSNR이 같다는 것은 두개의 데이타가 동일하다는 것을 의미한다기 보다, 두개의 음질이 동일하다(quality가 같다)는 것을 나타낸다고 봐야 합니다.
PSNR은 영상이나 소리등의 데이타에서 퀄리티(signal vs noise의 정도)를 나타내는 수치 정도로 보시는게 맞을겁니다.
쉽게 애기해서 소녀시대 노래와 원더걸스의 다른 노래가 동일한 PSNR을 가질 수도 있습니다.

[ 메시지수정: creib2k 일시: 2008-11-12 11:32 ]
Anonymous (0)
비회원
  게시일: 2008-11-12 14:24||
인용

글쓴이: creib2k 날짜: 2008-11-12 11:11

ps) PSNR로 두개의 데이타의 동일함을 판단하는 것은 문제가 있는 것 같습니다.
PSNR이 같다는 것은 두개의 데이타가 동일하다는 것을 의미한다기 보다, 두개의 음질이 동일하다(quality가 같다)는 것을 나타낸다고 봐야 합니다.
PSNR은 영상이나 소리등의 데이타에서 퀄리티(signal vs noise의 정도)를 나타내는 수치 정도로 보시는게 맞을겁니다.
쉽게 애기해서 소녀시대 노래와 원더걸스의 다른 노래가 동일한 PSNR을 가질 수도 있습니다.

이 부분에 대해선 creib2k님께서 조금 잘못 생각하시는 것 같습니다.

SNR(Signal-to-Noise Ratio)는 신호대 잡음비를 측정하는 방식이 맞습니다만...
PSNR를 계산할 때 원본과 사본(표현이 이상하지만 이렇게 표현하겠습니다)의 분산을 비교하는 것이잖습니까.

creib2k님의 말씀은 원더걸스의 Tell Me의 (1)원본과 (2)사본의 PSNR을,
소녀시대의 소녀시대의 (3)원본과 (4)사본의 PSNR을
비교했을 때 PSNR(1-2)과 PSNR(3-4)의 값이 같을 수도 있단 말씀인 것 같은데...

제 얘기는 (5)아날로그 소스를 다시 샘플링한 것과 (6)이걸 다시 녹음 한 것을 비교해
PSNR(5-6)를 측정해서 0에 가까우면 유사하단 말씀입니다.

두 값이 같은가, 또는 비슷한가를 측정하는 방법이 많이 제안되지만, 아직 PSNR보다 명확히 나은 방식은 본 적이 없습니다.
Anonymous (0)
비회원
  게시일: 2008-11-18 17:00||
어이쿠.. 제가 잠시 들어오지 않은 틈에 두분께서 답을 주셨네요..
감사합니다.. ^^;;;

근데.. 아직 문제는 해결 되지 않았는데요..
두분께서 오해르.. 제 설명이 부족한 듯 합니다..

먼저.. sine 파형의 wave 파일을 실행합니다. 이 때 line out - line in 단자를 연결하는 loopback cable를 통해 녹음을 진행합니다. 녹음 파일은 raw file 로 진행 할 예정이구요. 이 때 입력파는 곡선의 sine 파이기 때문에 디지털 형태의 raw file 하고는 직접 비교가 불가능하죠.. 그래서 raw file 하나로 처리 하려고 하는 것입니다.

sine파는 각 파형마다 적분했을 때 일정한 면적을 가지듯이 raw 파일의 파형도 디지털 형태를 가지고 각 파형마다 동일한 면적을 가질 것입니다. 그렇게 각 파형들을 비교 한다는 것입니다.
첫번째 파형의 면적(또는 매 순간 저장된 data의 합)을 기준값으로 두고, 그 뒤에 나오는 파형들이 첫번째 파형과 동일한 값을 가지는가 라는 것을 확인 하고자 하는 것이죠..

음.. 일단 raw file은 작성이 되었구요.. 조금 있다가 파일을 올려 보도록 하겠습니다. windows 용 gold wave 같은 프로그램을 사용하시면 파형을 보실 수 있습니다.. 지금 막힌 부분은 스테레오 파일이기에.. 좌/우 저장 되는 위치를 구별 지어야 한다는 것이죠.. 그래서 따로 저장하여 분석해야 할 것 같은데요..

휴.. 무지 긴데요... 역시 이해 하실 분이 드물 듯 합니다만.. ㅡㅡ;;

암튼.. 지금 문제는 스테레오로 저장 된 raw data file에서 어떤 기준으로 좌우로 저장 되었는가 라는 것을 찾는 것이 우선 일 듯 합니다.
(예를 들어 10바이트 단위로 좌/우 저장 될 수도 있구요.. 파일 전체 중 절반 나눠서 좌/우 들어 갈 수도 있기에.. 이것 부터 구별 된다면.. 음.. 배열로 저장해서 처리 하면 될 듯 한데요.. ) 아닐까요??? ㅡㅡ)a
Anonymous (0)
비회원
  게시일: 2008-11-18 19:31||
인용

글쓴이: musein 날짜: 2008-11-18 17:00

먼저.. sine 파형의 wave 파일을 실행합니다. 이 때 line out - line in 단자를 연결하는 loopback cable를 통해 녹음을 진행합니다. 녹음 파일은 raw file 로 진행 할 예정이구요. 이 때 입력파는 곡선의 sine 파이기 때문에 디지털 형태의 raw file 하고는 직접 비교가 불가능하죠.. 그래서 raw file 하나로 처리 하려고 하는 것입니다.

입력파가 곡선의 sine파라고 하시는데, 이 입력의 원 소스는 wave 파일 즉, 디지털 데이터입니다. 순수한 아날로그 데이터(자연계의 소리 )는 아니란 점은 생각하셔야 될 것 같습니다.

인용

sine파는 각 파형마다 적분했을 때 일정한 면적을 가지듯이 raw 파일의 파형도 디지털 형태를 가지고 각 파형마다 동일한 면적을 가질 것입니다. 그렇게 각 파형들을 비교 한다는 것입니다.
첫번째 파형의 면적(또는 매 순간 저장된 data의 합)을 기준값으로 두고, 그 뒤에 나오는 파형들이 첫번째 파형과 동일한 값을 가지는가 라는 것을 확인 하고자 하는 것이죠..

오디오 데이터의 비교는 일반적으로 그런 식으로 면적대 면적을 비교하는 것이 아니라, 샘플링된 데이터를 놓고 하나하나를 비교하는 것입니다.

인용

음.. 일단 raw file은 작성이 되었구요.. 조금 있다가 파일을 올려 보도록 하겠습니다. windows 용 gold wave 같은 프로그램을 사용하시면 파형을 보실 수 있습니다.. 지금 막힌 부분은 스테레오 파일이기에.. 좌/우 저장 되는 위치를 구별 지어야 한다는 것이죠.. 그래서 따로 저장하여 분석해야 할 것 같은데요..

오디오 파일을 저장하는 방식은 표준화되어있습니다.
샘플링된 각 데이터를 좌, 우 각각 하나씩 번갈아가며 저장합니다.
(우, 좌가 아니라 좌, 우입니다)
예컨데 16비트 signed stereo라면 [좌: -16384~16383][우: -16384~16383]가 반복된단 뜻이죠.

인용

휴.. 무지 긴데요... 역시 이해 하실 분이 드물 듯 합니다만.. ㅡㅡ;;

나름 비디오/오디오 쪽을 많이 다뤘고, 대학원에서도 이쪽 분야도 함께 연구하며 석사학위를 취득했기 때문에 이 분야를 모르는 편은 아닙니다.
하지만, 잘 이해가 되지 않는 부분이 많습니다.

인용

암튼.. 지금 문제는 스테레오로 저장 된 raw data file에서 어떤 기준으로 좌우로 저장 되었는가 라는 것을 찾는 것이 우선 일 듯 합니다.
(예를 들어 10바이트 단위로 좌/우 저장 될 수도 있구요.. 파일 전체 중 절반 나눠서 좌/우 들어 갈 수도 있기에.. 이것 부터 구별 된다면.. 음.. 배열로 저장해서 처리 하면 될 듯 한데요.. ) 아닐까요??? ㅡㅡ)a

앞에 적은 바와 같습니다.
다음글: PC 볼륨 조정 command (0)7780Anonymous2008-12-07
이전글: 배드 섹터가 왕창 난 HDD에 데비안 설치를 하려는데... (2)9907Anonymous2008-10-02

새글쓰기 답글쓰기
이동:

세상사는 이야기

  • 만원대 피젯 스피너를 >
  • 망하는 길을 택한 쿠팡 >
  • 물놀이에 적당한 가성 >
  • 컴퓨터를 IPTV로 2, po >
  • 컴퓨터를 IPTV로 만들 >
  • Warning.or.kr도 우회 >
  • 한국의 100대 부자, 어 >
  • 세상을 바꾼 크롬: 크 >
  • 장난(?)으로 시작한 여 >
  • 탈옥의 필수, QuickDo >


  • RSS 구독 (익명 | 회원 | 강좌 | 포럼)
    (C) 1996 ~ 2017 QAOS.com All rights reserved.