run_local.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #!usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # author: kuangdd
  4. # date: 2019/12/1
  5. """
  6. local
  7. """
  8. from pathlib import Path
  9. from functools import partial
  10. from multiprocessing.pool import Pool
  11. from matplotlib import pyplot as plt
  12. # from tqdm import tqdm
  13. import collections as clt
  14. import os
  15. import re
  16. import json
  17. import numpy as np
  18. import shutil
  19. import logging
  20. logging.basicConfig(level=logging.INFO)
  21. def run_spectrogram():
  22. from aukit import audio_spectrogram as asp
  23. from aukit import audio_griffinlim as agf
  24. from aukit import audio_io as aio
  25. from aukit.audio_player import play_audio
  26. inpath = r"E:/data/temp/01.wav"
  27. wav, sr = aio.load_wav(inpath, with_sr=True)
  28. print(wav.shape, sr)
  29. play_audio(wav, sr)
  30. lin_gf = agf.linear_spectrogram(wav)
  31. wav_gf = agf.inv_linear_spectrogram(lin_gf)
  32. play_audio(wav_gf, sr)
  33. mel_sp = asp.mel_spectrogram(wav)
  34. mel_sp = asp.mel2linear_spectrogram(mel_sp)
  35. wav_sp = agf.inv_linear_spectrogram(mel_sp)
  36. play_audio(wav_sp, sr)
  37. linear_gf = agf.linear_spectrogram(wav)
  38. mel_lin = agf.linear2mel_spectrogram(linear_gf)
  39. linear_mel = agf.mel2linear_spectrogram(mel_lin)
  40. wav_2 = agf.inv_linear_spectrogram(linear_mel)
  41. mel_sp = asp.mel_spectrogram(wav)
  42. mel_fea = asp.mel_spectrogram_feature(wav)
  43. # plt.figure()
  44. # plt.subplot("311")
  45. # plt.pcolor(linear)
  46. # plt.subplot("312")
  47. # plt.pcolor(linear2)
  48. # plt.subplot("313")
  49. # plt.pcolor(mel_fea)
  50. # plt.show()
  51. wav_ms = agf.inv_mel_spectrogram(mel_sp)
  52. wav_mf = agf.inv_mel_spectrogram(mel_fea)
  53. play_audio(wav_ms, sr)
  54. play_audio(wav_mf, sr)
  55. def run_world():
  56. from aukit import audio_world as awd
  57. from aukit import audio_player as apr
  58. from aukit import audio_io as aio
  59. inpath = r"E:/data/temp/01.wav"
  60. # sr, x = wavfile.read(inpath)
  61. x, sr = aio.load_wav(inpath, with_sr=True)
  62. f0, sp, ap = awd.world_spectrogram(x, sr)
  63. y = awd.inv_world_spectrogram(f0, sp, ap, sr)
  64. apr.play_audio(x, sr)
  65. apr.play_audio(y, sr)
  66. def create_readme():
  67. from aukit import readme_docs
  68. docs = []
  69. with open("README.md", "wt", encoding="utf8") as fout:
  70. for doc in readme_docs:
  71. fout.write(doc)
  72. docs.append(doc)
  73. return "".join(docs)
  74. def run_tuner():
  75. import aukit
  76. from aukit.audio_tuner import tune_speed, tune_pitch
  77. inpath = r"hello.wav"
  78. aukit.anything2bytes(inpath)
  79. aukit.anything2wav(inpath)
  80. aukit.anything2bytesio(inpath)
  81. bys = tune_speed(inpath, sr=16000, rate=0.5, out_type=None)
  82. print(bys)
  83. wav = tune_pitch(bys, sr=16000, rate=1, out_type=None)
  84. print(wav)
  85. aukit.play_audio(wav)
  86. def run_noise_remover():
  87. import aukit
  88. inpath = r"hello.wav"
  89. wav = aukit.load_wav(inpath)
  90. out = aukit.remove_noise(wav)
  91. aukit.play_audio(out)
  92. def run_player():
  93. import aukit
  94. inpath = Path(r"E:\data\aliaudio\examples\ali_Aibao_000001.wav")
  95. wav = aukit.load_wav(inpath, sr=16000)
  96. wav = aukit.change_voice(wav, mode="assign_pitch", alpha=200)
  97. aukit.play_audio(wav, volume=0.5)
  98. def run_aukit():
  99. import time
  100. t0 = time.time()
  101. from aukit.audio_io import __doc__ as io_doc
  102. from aukit.audio_editor import __doc__ as editor_doc
  103. from aukit.audio_tuner import __doc__ as tuner_doc
  104. from aukit.audio_player import __doc__ as player_doc
  105. from aukit.audio_noise_remover import __doc__ as noise_remover_doc
  106. from aukit.audio_normalizer import __doc__ as normalizer_doc
  107. from aukit.audio_spectrogram import __doc__ as spectrogram_doc
  108. from aukit.audio_griffinlim import __doc__ as griffinlim_doc
  109. from aukit.audio_changer import __doc__ as changer_doc
  110. from aukit.audio_cli import __doc__ as cli_doc
  111. from aukit.audio_world import __doc__ as world_doc
  112. t1 = time.time()
  113. print(t1 - t0)
  114. def compare_hparams():
  115. from aukit.audio_griffinlim import default_hparams as gfhp
  116. from aukit.audio_spectrogram import default_hparams as sphp
  117. a = set(gfhp.items()) - set(sphp.items())
  118. b = set(sphp.items()) - set(gfhp.items())
  119. print(a)
  120. print(b)
  121. def run_normalizer():
  122. import aukit
  123. from aukit.audio_player import play_sound
  124. from aukit import audio_normalizer as ano
  125. inpath = r"hello.wav"
  126. wav, sr = aukit.load_wav(inpath, with_sr=True)
  127. out = ano.remove_silence(wav)
  128. out = ano.tune_volume(wav, target_dBFS=-10)
  129. play_sound(out, sr)
  130. def run_editor():
  131. import aukit
  132. from aukit.audio_player import play_sound, play_audio
  133. from aukit import audio_editor as aed
  134. inpath = r"hello.wav"
  135. wav, sr = aukit.load_wav(inpath, with_sr=True)
  136. aud = aed.wav2audiosegment(wav, sr)
  137. out = aed.strip_audio(aud)
  138. wav = aed.audiosegment2wav(out)
  139. out = aed.remove_silence_wave(wav, sr=sr)
  140. out = aed.strip_silence_wave(out, sr=sr)
  141. print(len(wav), len(out))
  142. play_audio(out, sr)
  143. from aukit.audio_editor import convert_format_os
  144. def convert_format(x):
  145. return convert_format_os(**x)
  146. def run_cli():
  147. from aukit.audio_cli import pool_jobs
  148. from pathlib import Path
  149. indir = Path(r"E:\lab\zhrtvc\data\samples\aishell")
  150. outdir = Path(r"E:\lab\zhrtvc\data\samples_wav\aishell")
  151. kw_lst = []
  152. for inpath in indir.glob("**/*.mp3"):
  153. parts = inpath.parent.relative_to(indir).parts
  154. name = "{}.{}".format(inpath.stem, 'wav')
  155. outpath = outdir.joinpath(*parts, name)
  156. outpath.parent.mkdir(exist_ok=True, parents=True)
  157. kw = dict(inpath=str(inpath), outpath=str(outpath), in_format=None, out_format='wav')
  158. kw_lst.append(kw)
  159. pool_jobs(func=convert_format, n_process=14, kwargs_list=kw_lst, tqdm_desc='convert_format')
  160. if __name__ == "__main__":
  161. print(__file__)
  162. # run_spectrogram()
  163. # run_world()
  164. # create_readme()
  165. # run_tuner()
  166. # run_noise_remover()
  167. # run_player()
  168. # run_aukit()
  169. # compare_hparams()
  170. # run_normalizer()
  171. # run_editor()
  172. # run_cli()