음성 pcm 인코딩에 관한 질문입니다.
글쓴이: hwandori / 작성시간: 목, 2003/12/18 - 10:11오전
라이브러리를 사용해서 pcm 인코딩과 디코딩이 되는 지 보고 있는데 소리가 완전히 깨져서 나옵니다. 샘플 프로그램이 하나 있어서 거의 배끼다 시피 따라했는데도 원음을 알아들을 수 없게 꺠져 나오는군요.. 음성관련 프로그램은 처음이
라 잘모르겠네요
adpcm_coder( ind , compressed_buffer , MAX , &code ); //인코딩 write( com_fd , compressed_buffer , compressed_size ); //압축 파일 생성 memcpy( transmit_buffer , compressed_buffer , compressed_size ); adpcm_decoder( transmit_buffer , play_buffer , MAX , &decode ); //디코딩 write(ad_w, play_buffer , MAX);
어느정도 수준까지 소스를 올려야 할지는 모르겠지만
이 앞부분은 간단히 wav 파일을 열어서 MAX(128) 만큼 씩 read로 읽는 부분입니다.
이 아래 부분이 그 다음 부분인데 adpcm_coder가 pcm 인코딩 , adpcm_decoder가 pcm 디코딩 함수입니다. 아 그리고 중간에 압축 파일 생성은 그냥 빼도 되고요...
pcm 인/디코딩을 해보신 분은 지적을 부탁드립니다.
Forums:
/dev/dsp 를 쓰신다면 ioctl 로 필요한 변수들을 다 맞춰주셨나
/dev/dsp 를 쓰신다면 ioctl 로 필요한 변수들을 다 맞춰주셨나요? sampling rate나, endian 이나 등등...
아 설정을 해줘야 하는군요.. 제가 설정한 것이 sample rate와
아 설정을 해줘야 하는군요.. 제가 설정한 것이 sample rate와 dma buffer size 설정했는데 더 설정할것이 있나요? 그래도 깨끗하게 나오지는 않네요...이유는 잘 모르겠지만...많이 깨끗해지긴 했습니다.
음성코딩이나 /dev/dsp에 관한 설정에 대한 문서나 자료가 있으면 부
음성코딩이나 /dev/dsp에 관한 설정에 대한 문서나 자료가 있으면 부탁드려요...
adpcm 으로 압축하시는군요. adpcm 압축할 때 중요한 점은 원본
adpcm 으로 압축하시는군요. adpcm 압축할 때 중요한 점은 원본 샘플의 양자화 크기가 16비트 이상 (최소한 12비트) 이어야 하고, 최대값의 90%정도로 레벨을 맞춰야 합니다. adpcm 특성상 이 조건이 맞지 않으면 잡음이 생기고 그 잡음이 후반으로 갈수록 안좋아지는 경향이 있습니다. 특히 레벨치가 커지는 시점에서 최대치를 넘어가면 중간값이 0이 아니라 공중에 떠서 움직여서 더 심한 잡음을 내게 됩니다.
코덱의 설정값은 잘 조사하셔서 미리 맞추셔야 하는 것은 당연하구요. pcm 원본 데이터의 음질도 중요하고 중간값 등도 잘 고려하셔야 합니다. 어떤 것은 pcm 을 16비트의 부호있는 정수로 취급하고 어떤 것은 부호없이 취급하기도 합니다.
그럼, 이만...
[quote]adpcm 으로 압축하시는군요. adpcm 압축할 때 중요한
Bingo!
제가 더 할말은 딱 하나 더 있을 것 같네요. OSS 프로그래머 가이드를 참조하세요. :-)
댓글 달기