본문 바로가기

Personal Posting/Python

Convert PCM

PCM으로 변환된 WUW랑 BI wave 파일
convertPCM.py
0.00MB

Vocalizer로 다국어 검증을 하다 특정 명령어를 파일로 떨구고 싶은데 이게 RAW 데이터로 필요한 경우가 있다.

Vocalizer의 Generate wave 기능은 말그대로 wave 파일을 생성해주기 때문에 wav 파일을 pcm으로 변환할 필요가 있었고, 파이썬을 뒤적이다 좋은 코드가 있어 퍼왔다.

 

#!/usr/bin/python

import sys
import os.path

ext = None

def convert_wave_to_pcm(filename):
	file = open(filename, 'rb')
    byteBuffer = bytearray(file.read())
    file.close()
    
    fn_ext = os.path.splitext(filename)
    
    if fn_ext[1] == '.wav':
    	out_filename = fn_ext[0] + '.pcm'
	else:
    	out_filename = fn_ext[0] + fn_ext[1] + '.pcm'
	
    print 'Out file name: %s' % out_filename
    out_file = open(out_filename, 'wb')
    out_file.write(byteBuffer[44:])
    out_file.close()
    
if len(sys.argv) is 1:
	YesNo = raw_input('Do you want to convert *.wav to *.pcm? (Yes or No): ')
    if 'yes' in YesNo:
    	filename = '.wav'
        print('Convert *.wav to *.pcm !!!')
	else:
    	print('Please try it again with a filename or .wav !!!')
        exit(0)
else:
	filename = sys.argv[1]
    
while True:
	fn_ext = os.path.splitext(filename)
    if (not fn_ext[1]) & fn_ext[0].count('.'):
    	if fn_ext[0] == '.':
        	print 'Input file name is invalid!!!'
            exit(0)
		else:
        	print 'Input file name has the only ext!!!'
            ext = fn_ext[0]
            break
	else:
    	try:
        	convert_wave_to_pcm(filename)
            break
		except:
        	print '[Error] No such file: %s' % filename
            filename = raw_input('Please type file name: ')	
            
if ext is not None:
	folder = os.getcwd()
    print 'folder: %s' % folder
    
    for filename in os.listdir(folder):
    	print filename
        if filename.endswith(ext):
        	convert_wave_to_pcm(filename)
            
raw_input('Press Enter to exit')
exit(0)

'Personal Posting > Python' 카테고리의 다른 글

py 파일 exe 파일로 변환  (0) 2023.04.12
Pythonista로 아이폰에서 코드 빌드하기  (0) 2020.04.09