Spaces:
Paused
Paused
| #!/usr/bin/python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| 输出的音频有噪音. | |
| """ | |
| import argparse | |
| import librosa | |
| import numpy as np | |
| from scipy.io import wavfile | |
| from project_settings import project_path | |
| def get_args(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument( | |
| "--filename", | |
| default=(project_path / "data/voice_clone_audio/e2_tts/audio_0_3_clone_from_audio_0_2.wav").as_posix(), | |
| type=str, | |
| ) | |
| parser.add_argument( | |
| "--output_file", | |
| default="temp.wav", | |
| type=str, | |
| ) | |
| parser.add_argument("--change_by_db", default=-10, type=int) | |
| args = parser.parse_args() | |
| return args | |
| def change_by_db(signal: np.ndarray, db: int = -10): | |
| # 使用分贝转换公式:dB = 20 * log10(amplitude) | |
| # 反向转换:amplitude = 10^(dB/20) | |
| signal_ = signal * (10 ** (db / 20)) | |
| signal_ = np.clip(signal_, a_min=0.0, a_max=1.0) | |
| return signal_ | |
| def main(): | |
| args = get_args() | |
| signal, sample_rate = librosa.load(args.filename) | |
| signal_ = change_by_db( | |
| signal=signal, | |
| db=args.change_by_db, | |
| ) | |
| # max_wave_value = 32768.0 | |
| max_wave_value = 1 << 15 | |
| signal_ = signal_ * max_wave_value | |
| signal_ = np.array(signal_, dtype=np.int16) | |
| wavfile.write( | |
| filename=args.output_file, | |
| rate=sample_rate, | |
| data=signal_ | |
| ) | |
| return | |
| if __name__ == "__main__": | |
| main() | |