[2023 02 02] 목소리 더빙, 보이스 도와주는 프로그램 개발 연습 일지 (7) - 사운드 파일 로드 및 처리자 구현 - Whitmem
[2023 02 02] 목소리 더빙, 보이스 도와주는 프로그램 개발 연습 일지 (7) - 사운드 파일 로드 및 처리자 구현
Develop History
2023-02-03 12:05 게시 ff1888bb2fd785936629

0
0
79
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
목표
wav 파일을 불러오고 처리하며, 메모리 상에 데이터를 담을 수 있도록 한다. 오디오 버퍼를 저장하고 추후 UI 작업에 용이하도록 처리자를 만든다.
Classes

클래스 목록
새로 추가된 클래스로는 AudioStreams 패키지 속의 AudioStream MonoAudioStream 클래스가 존재하며, Audios 패키지 내의 DataImplements 가 존재한다. 그 외 Wrapper 클래스로 오디오 데이터를 손 쉽게 transform 할 수 있도록 AudioFloatWrapperPCMAudioChannelWrapper 클래스를 만들었다.
AudioData
기존 AudioData는 하나의 오디오 데이터를 담을 것으로 예상했지만, 실제 Wav 파일의 경우 여러 채널이 존재하고 이를 동적으로 로드 및 관리해야 할 필요성이 있어 별도의 AudioStream의 클래스를 만들어 구현했다. 지금 당장은 모노~채널 2까지만 지원하지만, 추후 확장 개발 및 업데이트를 할 때 용이하도록 하는 것이 목표이다.

AudioData 클래스의 모습
AudioStream
AudioStream 내에서는 Wav 파일을 로드하고 메모리상에 담을 수 있도록 initialization 을 진행한다. 이 대 MonoAudioStream을 통해 wav 파일 내의 PCM data (채널 별 PCM Stream)을 분리 보관하여 배열에 차곡 처리 해 담는다.

AudioStream 클래스의 모습
AudioFloatWrapper
AudioFloatWrapper 은 추후 UI 상에서 PCM 오디오 데이터를 시각적인 정보로 구성해야 할 때 사용할 수 있다. WAV 파일의 PCM data는 Audio 의 소리 진폭 정보 및 각 위상 정보를 소수나 퍼센트 형태로 그대로 저장하는 것이 아니라 비트 데이터로 변환하여 엔디안 처리를 진행한 뒤 저장하는 것으로 보인다. 즉 PCM 데이터를 Audio 위상 정보로 변환하기 위해서는 채널 별로 Sample 데이터를 비트 단위로 쪼개서 부호 있는 double 형태로 변환하는 작업이 필요하며 그 작업을 이 클래스에서 진행할 수 있도록 구현하였다.

AudioFloatWrapper 클래스의 모습
다음 목표
다음 목표는 자잘하게 미완성된 PD-Layer 부분을 수정하고, 오디오를 합성하거나 재생하고, 렌더할 수 있도록 클래스를 구현하는 것이 목표이다. 비로소 이 작업까지 완료 되었을 때 UI 작업을 시작할 수 있을 것으로 보인다. 끝
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.