File size: 2,066 Bytes
459dab4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/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()