summaryrefslogtreecommitdiff
path: root/opt/noNoise-master/noNoise.py
diff options
context:
space:
mode:
Diffstat (limited to 'opt/noNoise-master/noNoise.py')
-rw-r--r--opt/noNoise-master/noNoise.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/opt/noNoise-master/noNoise.py b/opt/noNoise-master/noNoise.py
new file mode 100644
index 0000000..cfff188
--- /dev/null
+++ b/opt/noNoise-master/noNoise.py
@@ -0,0 +1,113 @@
+#!/usr/bin/python env
+
+"""This script can be used to remove audio noise from 'ogv' videos.
+
+ Usage:(for future Srikant & all users)
+
+ 1)Remove noise from a single file:
+ ----------------------------------
+ $ python noNoise.py VideoWithNoise.ogv CleanVideo.ogv
+ (source file) (destination file)
+
+ (OR)
+
+ $ python noNoise.py VideoWithNoise.ogv CleanVideo.ogv 0.21
+ (source file) (destination file) (noise factor)
+
+ The third argument is optional(Noise factor). The scale spans from
+ 0.0 to 1.0. Zero means no noise supression and 1.0 means full. The full
+ scale is avoided. Best optimum result is found between 0.2 to 0.3. By default
+ script will take 0.26. One can experiment with noise factor to get best noise
+ free video.
+ NOTE: Careful, destination file will be overwritten if exist in given path.
+
+
+
+ 2)Remove noise from all files inside a directory:
+ -------------------------------------------------
+ $ python noNoise.py allNoisyFiles allCleanFiles
+ (source dir) (destination dir)
+
+ (OR)
+
+ $ python noNoise.py allNoisyFiles allCleanFiles 0.21
+ (source Dir) (destination dir) (Noise factor)
+
+
+ NOTE: Please don't use any '/' after directory name. It will spit error.
+ The fix is possible, but I don't want to spend time on it. This script is dirty
+ but useful(atleast for me). When I find time, I will surely modify it. Meanwhile
+ you all are welcome to add modifications. Please find this copy and future updates
+ at http://github.com/srikantpatnaik.
+ Thanks for your time.
+
+ Details of each commands are in README.rst.
+
+"""
+
+from os import system, path, listdir, chdir, mkdir
+from sys import argv
+from time import sleep
+
+def checkType():
+ #Check for type of first argument(file or dir).
+ if path.isdir(argv[1]):
+ processDir()
+ else:
+ processFile()
+ return
+
+
+def processDir():
+ #make dir to save all new files
+ mkdir(argv[2])
+ #cd to source dir
+ chdir(argv[1])
+ for eachfile in listdir('.'):
+ execute(setCommands(eachfile))
+ return
+
+
+def processFile():
+ #Calling setCommands with source file.
+ #Will return list of commands to be executed
+ execute(setCommands(argv[1]))
+ return
+
+
+def execute(cli):
+ #total 7 commands with some delay for disk
+ #write and sync
+ for each in cli:
+ system(each)
+ sleep(0.2)
+ return
+
+
+def setCommands(filename):
+ #The dirty function.
+ cli = [None]*7
+ cli[0] = 'ffmpeg -i ' + ' ' + filename + ' -sameq -an ' + '.rawVideo.wmv'
+ cli[1] = 'ffmpeg -i ' + ' ' + filename + ' -sameq ' + '.rawAudio.wav'
+ cli[2] = 'sox .rawAudio.wav -t null /dev/null trim 0 0.5 noiseprof myprofile'
+ #Checks for noise factor.
+ if len(argv)>3:
+ cli[3] = 'sox .rawAudio.wav .noisefree.wav noisered myprofile ' + argv[3]
+ else:
+ #The default value for noise factor is 0.26. Change accordingly.
+ cli[3] = 'sox .rawAudio.wav .noisefree.wav noisered myprofile 0.26'
+ #Creating a less compressed file to retain video quality.
+ cli[4] = 'ffmpeg -i .noisefree.wav -i .rawVideo.wmv -sameq .combined.wmv'
+ #Checks for file or directory. If dir, the output is saved in different directory.
+ if not path.isfile(argv[1]):
+ cli[5] = 'ffmpeg2theora .combined.wmv -o ' + '../' + argv[2] + '/' + filename
+ else:
+ #Will create the final ogv video from wmv.
+ cli[5] = 'ffmpeg2theora .combined.wmv -o ' + argv[2]
+ cli[6] = 'rm .rawVideo.wmv .rawAudio.wav .noisefree.wav .combined.wmv myprofile'
+ return cli
+
+
+
+if __name__ == '__main__':
+ checkType()