final_script.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import os
  2. import glob
  3. import sox
  4. # refactor by adding arguments
  5. cwd = os.getcwd()
  6. def sortKeyFunc(s):
  7. return int(os.path.basename(s)[:-4])
  8. #refactoring
  9. # def remix_audio(input_folder, output_folder):
  10. # input_filenames = sorted(glob.glob(cwd + '/' + input_folder + '*.wav'), key=sortKeyFunc)
  11. # output_directory = cwd + '/' + output_folder
  12. # def create_output_filename(input_filename, output_dir):
  13. # return os.path.join(output_dir, 'remix', os.path.split(input_filename)[1])
  14. # for input_file in input_filenames:
  15. # t = sox.Transformer()
  16. # # remix_dictionary = {1: [1], 2: [1]}
  17. # remix_dictionary = {1: [2], 2: [2]}
  18. # t.remix(remix_dictionary)
  19. # out_name = create_output_filename(input_file, output_directory)
  20. # os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  21. # t.build(input_file, out_name)
  22. # def pad_audio(input_folder, output_folder, silence):
  23. # input_filenames = sorted(glob.glob(cwd + '/' + input_folder + '/remix/*.wav'), key=sortKeyFunc)
  24. # output_directory = cwd + '/' + output_folder
  25. # def create_output_filename(input_filename, output_dir):
  26. # return os.path.join(output_dir, 'padded', os.path.split(input_filename)[1])
  27. # for input_file in input_filenames:
  28. # t = sox.Transformer()
  29. # t.norm(-3)
  30. # t.fade(fade_in_len=0.2, fade_out_len=0.2)
  31. # t.pad(silence, 0)
  32. # out_name = create_output_filename(input_file, output_directory)
  33. # os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  34. # t.build(input_file, out_name)
  35. def remix_vocal():
  36. input_filenames = sorted(glob.glob(cwd + '/vocal/*.wav'), key=sortKeyFunc)
  37. output_directory = cwd + '/remix_vocal'
  38. def create_output_filename(input_filename, output_dir):
  39. return os.path.join(output_dir, 'remix', os.path.split(input_filename)[1])
  40. for input_file in input_filenames:
  41. t = sox.Transformer()
  42. # remix_dictionary = {1: [1], 2: [1]}
  43. remix_dictionary = {1: [2], 2: [2]}
  44. t.remix(remix_dictionary)
  45. out_name = create_output_filename(input_file, output_directory)
  46. os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  47. t.build(input_file, out_name)
  48. def remix_field():
  49. input_filenames = sorted(glob.glob(cwd + '/field/*.wav'), key=sortKeyFunc)
  50. output_directory = cwd + '/remix_field'
  51. def create_output_filename(input_filename, output_dir):
  52. return os.path.join(output_dir, 'remix', os.path.split(input_filename)[1])
  53. for input_file in input_filenames:
  54. t = sox.Transformer()
  55. # remix_dictionary = {1: [1], 2: [1]}
  56. remix_dictionary = {1: [2], 2: [2]}
  57. t.remix(remix_dictionary)
  58. out_name = create_output_filename(input_file, output_directory)
  59. os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  60. t.build(input_file, out_name)
  61. def pad_three_seconds():
  62. input_filenames = sorted(glob.glob(cwd + '/remix_vocal/remix/*.wav'), key=sortKeyFunc)
  63. output_directory = cwd + '/padded_three'
  64. def create_output_filename(input_filename, output_dir):
  65. return os.path.join(output_dir, 'padded', os.path.split(input_filename)[1])
  66. for input_file in input_filenames:
  67. t = sox.Transformer()
  68. t.norm(-3)
  69. t.fade(fade_in_len=0.2, fade_out_len=0.2)
  70. t.pad(1, 0)
  71. out_name = create_output_filename(input_file, output_directory)
  72. os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  73. t.build(input_file, out_name)
  74. def pad_one_second():
  75. input_filenames = sorted(glob.glob(cwd + '/remix_field/remix/*.wav'), key=sortKeyFunc)
  76. output_directory = cwd + '/padded_one'
  77. def create_output_filename(input_filename, output_dir):
  78. return os.path.join(output_dir, 'padded', os.path.split(input_filename)[1])
  79. for input_file in input_filenames:
  80. t = sox.Transformer()
  81. t.norm(-3)
  82. t.fade(fade_in_len=0.2, fade_out_len=0.2)
  83. t.pad(1, 0)
  84. out_name = create_output_filename(input_file, output_directory)
  85. os.makedirs(os.path.split(out_name)[0], exist_ok=True)
  86. t.build(input_file, out_name)
  87. def combine_audio():
  88. audio_one = sorted(glob.glob(cwd + '/padded_one/padded/*.wav'), key=sortKeyFunc)
  89. audio_two = sorted(glob.glob(cwd + '/padded_three/padded/*.wav'), key=sortKeyFunc)
  90. paired_audio = [list(x) for x in zip(audio_one, audio_two)]
  91. cbn = sox.Combiner()
  92. for n in paired_audio:
  93. out_name = os.path.split(n[0])[1].replace('.wav', '') + '_and_' + 'vocal' + os.path.split(n[1])[1]
  94. cbn.build(n, cwd + '/audio_outputs/' + out_name, 'concatenate')
  95. for afunc in (remix_vocal, remix_field, pad_three_seconds, pad_one_second, combine_audio):
  96. afunc()
  97. # refactored function caller
  98. # for afunc in (remix_audio(), remix_audio(), pad_audio(), pad_audio(), combine_audio):
  99. # afunc()