#!/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()