cc_audio_8 / examples /download_wav /step_2_to_1ch.py
HoneyTian's picture
pdate
459dab4
raw
history blame
2.07 kB
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import argparse
import os
from pathlib import Path
import time
from scipy.io import wavfile
from tqdm import tqdm
from project_settings import project_path
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--audio_dir",
default=(project_path / "data/calling/358/wav_2ch").as_posix(),
type=str
)
parser.add_argument(
"--output_dir",
default=(project_path / "data/calling/358/wav_1ch").as_posix(),
type=str
)
args = parser.parse_args()
return args
def main():
args = get_args()
audio_dir = Path(args.audio_dir)
output_dir = Path(args.output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
finished = set()
for filename in tqdm(list(output_dir.glob("*.wav"))):
splits = filename.stem.split("_")
call_id = splits[3]
finished.add(call_id)
print(f"finished count: {len(finished)}")
for filename in tqdm(list(audio_dir.glob("*.wav"))):
call_id = filename.stem
if call_id in finished:
os.remove(filename.as_posix())
continue
finished.add(call_id)
try:
sample_rate, signal = wavfile.read(filename.as_posix())
except UnboundLocalError as error:
print(f"wavfile read failed. error type: {type(error)}, text: {str(error)}, filename: {filename.as_posix()}")
raise error
if sample_rate != 8000:
raise AssertionError
signal = signal[:, 0]
to_filename = output_dir / f"active_media_r_{call_id}_fi-FI_none.wav"
try:
wavfile.write(
to_filename.as_posix(),
sample_rate,
signal
)
os.remove(filename.as_posix())
except OSError as error:
print(f"wavfile write failed. error type: {type(error)}, text: {str(error)}, filename: {filename.as_posix()}")
raise error
return
if __name__ == "__main__":
main()