agermanidis / autosub

[NO LONGER MAINTAINED] Command-line utility for auto-generating subtitles for any video file
MIT License
4.15k stars 1.65k forks source link

Install AutoSub Step to Step in Windows with Translate subtitle #31

Open JeanDown123 opened 8 years ago

JeanDown123 commented 8 years ago

Requeriments Windows 32 or 64 bits. Connection Internet. Links Downloads Python FFMPEG AutoInstall autosub_app 0.3.12.zip SampleVideos Spanish - English.zip Subtitle Editor Aegisub For Version autosub 0.3.9 Note: Uninstall Python 3.x Tutorial Video Youtube

  1. Install Python 2.7 (32 bits) https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi python ## Note: Check Add Python.exe to Path

  2. Run cmd (Win+R) C:\Python27\Scripts\pip.exe install autosub Or C:\Python27\Scripts\pip.exe install https://pypi.python.org/packages/35/7b/9d5361c0f7abfcc6d826a5279b1c4501f7616505629f6c54857587ec6e37/autosub-0.3.9.tar.gz or (Download Last version autosub https://pypi.python.org/pypi/autosub) C:\Python27\Scripts\pip.exe install "c:\youdownloaded\autosub-0.3.9.tar.gz"

    Message Output Normal

    Installing collected packages: autosub
    Successfully installed autosub-0.3.9
    
  3. Change Name File "autosub" to "autosub_app.py" Rename C:\Python27\Scripts\autosub autosub_app.py

  4. Modify with notepad.exe or Notepad++(Edit Text) autosub_app.py 4.1 In line 48 add ", delete=False" temp = tempfile.NamedTemporaryFile(suffix='.flac') by temp = tempfile.NamedTemporaryFile(suffix='.flac', delete=False) 4.2 Eliminate line 53 os.system('stty sane'). (Optional) UPDATE For last Version Autosub (23 May 2017) In Windows xp,7,8,10 With Program Notepad change lines : Line 127 change exe_file = os.path.join(path, program) exe_file = os.path.join(path, program + ".exe") Line 47 change temp = tempfile.NamedTemporaryFile(suffix='.flac') temp = tempfile.NamedTemporaryFile(suffix='.flac', delete=False)

  5. Download(https://ffmpeg.zeranoe.com/builds/) and Copy ffmpeg.exe to C:\Python27\

  6. Restart Windows

  7. Test Script C:\Python27\python.exe C:\Python27\scripts\autosub_app.py --list-languages

SampleVideos Spanish - English.zip autosub_app 0.3.12.zip

Auto-generating subtitles for any video file

Spanish C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S es -D es TuVideo.mp4 English C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S en -D en YouVideo.mp4 Japanese C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S ja -D ja YouAnimeVideo.mp4 cmd

Optional Compile script Python(Exe Executable) C:\Python27\python.exe -m compileall C:\Python27\scripts\autosub_app.py Run C:\Python27\scripts\autosub_app.pyc YouVideo.mp4 (English Default) Upgrade Pip python -m pip install --upgrade pip

One-Click EASY with SENDTO.

autosub_app.zip Create batch by language (JA) _AutoSubJap.bat and copy to directory SendTo "shell:sendto" "%APPDATA%\Microsoft\Windows\SendTo" AutoSub_Jap.bat C:\Python27\python.exe C:\Python27\Scripts\autosub_app.py -C 2 -S ja -D ja %1 sendto sendto

http://www.howtogeek.com/howto/windows-vista/customize-the-windows-vista-send-to-menu/ 7.- Translate your Subtitles Download Subtitle Edit https://github.com/SubtitleEdit/subtitleedit/releases SubtitleEdit-3.4.13-Setup.zip Or VersionPortable SE3413PL.zip

Or

https://sourceforge.net/projects/srt-tran/ SRTTRANSLATOR

Results:

Link Video Youtube Test

Comparison

Auto-Generated by Youtube President Obama Addresses the Nation on the BP Oil Spill (inglés).Youtube.srt.txt Generated by Script AutoSub President Obama Addresses the Nation on the BP Oil Spill (inglés).AutoSub.srt.txt Time Process: 01:15 Abot Minute Times are best generated by AUTOSUB.

Errors Commons in Windows

-Error install pip "python setup.py egg_info" Solution Install Python 2.7 uninstall 3.x

"WindowsError [Error 2]"

C:\Python27>python.exe C:\Python27\scripts\autosub_app.py -S en -D en test.mp4
Traceback (most recent call last):
  File "C:\Python27\scripts\autosub_app.py", line 284, in <module>
    sys.exit(main())
  File "C:\Python27\scripts\autosub_app.py", line 210, in main
    audio_filename, audio_rate = extract_audio(args.source_path)
  File "C:\Python27\scripts\autosub_app.py", line 120, in extract_audio
    subprocess.check_output(command)
  File "C:\Python27\lib\subprocess.py", line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "C:\Python27\lib\subprocess.py", line 710, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
    startupinfo)
WindowsError: [Error 2]

Solution. Copy ffmpeg.exe to C:\Python27\ or Or ADD Path (Directory) File ffmpeg. Examples: c:\ffmpeg\ , c:\Program Files\ffmpeg, c:\Mydownloads\ Link Help Add Path(Directory) http://www.computerhope.com/issues/ch000549.htm python

Error infinite loop

"File "C:\Python27\lib\multiprocessing\forking.py", line 380"
"File "C:\Python27\lib\multiprocessing\forking.py", line 503"
ImportError : prepare(preparation_data)

Solution Change name script C:\Python27\Scripts\autosub autosub_app.py

Error Permission denied Files Flac c:...local\temp\tmpksjd.flac Permission denied Solution: Modify Script, close file. Link https://github.com/agermanidis/autosub/issues/15

----------------------Before - Original-------------------------

class FLACConverter(object):
    def __init__(self, source_path, include_before=0.25, include_after=0.25):
        self.source_path = source_path
        self.include_before = include_before
        self.include_after = include_after

    def __call__(self, region):
        try:
            start, end = region
            start = max(0, start - self.include_before)
            end += self.include_after
            temp = tempfile.NamedTemporaryFile(suffix='.flac')
            command = ["ffmpeg", "-y", "-i", self.source_path,
                       "-ss", str(start), "-t", str(end - start),
                       "-loglevel", "error", temp.name]
            subprocess.check_output(command)
            os.system('stty sane')
            return temp.read()

----------------------After - Modified Option 1 ------------------------

class FLACConverter(object):
    def __init__(self, source_path, include_before=0.25, include_after=0.25):
        self.source_path = source_path
        self.include_before = include_before
        self.include_after = include_after

    def __call__(self, region):
        try:
            start, end = region
            start = max(0, start - self.include_before)
            end += self.include_after
            temp = tempfile.NamedTemporaryFile(suffix='.flac')      
            temp.close()
            command = ["ffmpeg", "-y", "-i", self.source_path,
                       "-ss", str(start), "-t", str(end - start),
                       "-loglevel", "error", temp.name]
            subprocess.check_output(command)
            return open(temp.name, "rb").read()

----------------------after - Modified Option 2 ------------------------

class FLACConverter(object):
    def __init__(self, source_path, include_before=0.25, include_after=0.25):
        self.source_path = source_path
        self.include_before = include_before
        self.include_after = include_after

    def __call__(self, region):
        try:
            start, end = region
            start = max(0, start - self.include_before)
            end += self.include_after
            temp = tempfile.NamedTemporaryFile(suffix='.flac', delete=False)
            command = ["ffmpeg", "-y", "-i", self.source_path,
                       "-ss", str(start), "-t", str(end - start),
                       "-loglevel", "error", temp.name]
            subprocess.check_output(command)
            return temp.read()

        except KeyboardInterrupt:
            return

Message Normal Output Pip install autosub

Collecting autosub
  Downloading autosub-0.3.9.tar.gz
Collecting google-api-python-client>=1.4.2 (from autosub)
  Downloading google_api_python_client-1.5.1-py2.py3-none-any.whl (50kB)
Collecting requests>=2.3.0 (from autosub)
  Downloading requests-2.11.0-py2.py3-none-any.whl (514kB)
Collecting pysrt>=1.0.1 (from autosub)
  Downloading pysrt-1.1.1.tar.gz (104kB)
Collecting progressbar>=2.3 (from autosub)
  Downloading progressbar-2.3.tar.gz
Collecting six<2,>=1.6.1 (from google-api-python-client>=1.4.2->autosub)
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting uritemplate<1,>=0.6 (from google-api-python-client>=1.4.2->autosub)
  Downloading uritemplate-0.6.tar.gz
Collecting httplib2<1,>=0.8 (from google-api-python-client>=1.4.2->autosub)
  Downloading httplib2-0.9.2.zip (210kB)
Collecting oauth2client (from google-api-python-client>=1.4.2->autosub)
  Downloading oauth2client-3.0.0.tar.gz (77kB)
Collecting chardet (from pysrt>=1.0.1->autosub)
  Downloading chardet-2.3.0.tar.gz (164kB)
Collecting simplejson>=2.5.0 (from uritemplate<1,>=0.6->google-api-python-client>=1.4.2->autosub)
  Downloading simplejson-3.8.2-cp27-cp27m-win32.whl (65kB)
Collecting pyasn1>=0.1.7 (from oauth2client->google-api-python-client>=1.4.2->autosub)
  Downloading pyasn1-0.1.9-py2.py3-none-any.whl
Collecting pyasn1-modules>=0.0.5 (from oauth2client->google-api-python-client>=1.4.2->autosub)
  Downloading pyasn1_modules-0.0.8-py2.py3-none-any.whl
Collecting rsa>=3.1.4 (from oauth2client->google-api-python-client>=1.4.2->autosub)
  Downloading rsa-3.4.2-py2.py3-none-any.whl (46kB)
Installing collected packages: six, simplejson, uritemplate, httplib2, pyasn1, pyasn1-modules, rsa, oauth2client, google-api-python-client, requests, chardet, pysrt, progressbar, autosub
  Running setup.py install for uritemplate: started
    Running setup.py install for uritemplate: finished with status 'done'
  Running setup.py install for httplib2: started
    Running setup.py install for httplib2: finished with status 'done'
  Running setup.py install for oauth2client: started
    Running setup.py install for oauth2client: finished with status 'done'
  Running setup.py install for chardet: started
    Running setup.py install for chardet: finished with status 'done'
  Running setup.py install for pysrt: started
    Running setup.py install for pysrt: finished with status 'done'
  Running setup.py install for progressbar: started
    Running setup.py install for progressbar: finished with status 'done'
  Running setup.py install for autosub: started
    Running setup.py install for autosub: finished with status 'done'
Successfully installed autosub-0.3.9 chardet-2.3.0 google-api-python-client-1.5.1 httplib2-0.9.2 oauth2client-3.0.0 progressbar-2.3 pyasn1-0.1.9 pyasn1-modules-0.0.8 pysrt-1.1.1 requests-2.11.0 rsa-3.4.2 simplejson-3.8.2 six-1.10.0 uritemplate-0.6

For Version autosub 0.3.9 File For Windows Modified. Rename autosub_app.py.txt to autosub_app.py, and copy

C:\Python27\Scripts

autosub_app.py.txt SampleVideos Spanish - English.zip autosub_app 0.3.12.zip

SvenErik1968 commented 8 years ago

I have installed autosub as described above, but I get the following error message:

E:\Completed>C:\Python27\python.exe C:\Python27\scripts\autosub_app.py --list-la
nguages
Traceback (most recent call last):
  File "C:\Python27\scripts\autosub_app.py", line 17, in <module>
    from autosub.constants import LANGUAGE_CODES, \
  File "C:\Python27\Scripts\autosub.py", line 17, in <module>
ImportError: No module named constants

I can find the constanst.py file under C:\Python27\Lib\site-packages\autosub\constants.py

JeanDown123 commented 8 years ago

Try cmd pip uninstall autosub What is your message? output? install autosub What is your message? output?

---------Message Normal install-------

Collecting autosub
Requirement already satisfied (use --upgrade to upgrade): pysrt>=1.0.1 in c:\python27\lib\site-packages (from autosub)
Requirement already satisfied (use --upgrade to upgrade): requests>=2.3.0 in c:\python27\lib\site-packages (from autosub)
Requirement already satisfied (use --upgrade to upgrade): google-api-python-client>=1.4.2 in c:\python27\lib\site-packages (from autosub)
Requirement already satisfied (use --upgrade to upgrade): progressbar>=2.3 in c:\python27\lib\site-packages (from autosub)
Requirement already satisfied (use --upgrade to upgrade): chardet in c:\python27\lib\site-packages (from pysrt>=1.0.1->autosub)
Requirement already satisfied (use --upgrade to upgrade): uritemplate<1,>=0.6 in c:\python27\lib\site-packages (from google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): httplib2<1,>=0.8 in c:\python27\lib\site-packages (from google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): six<2,>=1.6.1 in c:\python27\lib\site-packages (from google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): oauth2client in c:\python27\lib\site-packages (from google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): simplejson>=2.5.0 in c:\python27\lib\site-packages (from uritemplate<1,>=0.6->google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.7 in c:\python27\lib\site-packages (from oauth2client->google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): pyasn1-modules>=0.0.5 in c:\python27\lib\site-packages (from oauth2client->google-api-python-client>=1.4.2->autosub)
Requirement already satisfied (use --upgrade to upgrade): rsa>=3.1.4 in c:\python27\lib\site-packages (from oauth2client->google-api-python-client>=1.4.2->autosub)
Installing collected packages: autosub
Successfully installed autosub-0.3.9

---------Message Normal uninstall-------

Uninstalling autosub-0.3.9:
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\description.rst
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\installer
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\metadata
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\metadata.json
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\pbr.json
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\record
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\top_level.txt
  c:\python27\lib\site-packages\autosub-0.3.9.dist-info\wheel
  c:\python27\lib\site-packages\autosub\__init__.py
  c:\python27\lib\site-packages\autosub\__init__.pyc
  c:\python27\lib\site-packages\autosub\constants.py
  c:\python27\lib\site-packages\autosub\constants.pyc
  c:\python27\lib\site-packages\autosub\formatters.py
  c:\python27\lib\site-packages\autosub\formatters.pyc
  c:\python27\scripts\autosub
Proceed (y/n)? y
  Successfully uninstalled autosub-0.3.9
SvenErik1968 commented 8 years ago

The message output were the same as you put above, but something must have changed, because it started working after I uninstalled and then installed it again.

TTonyWang commented 8 years ago

Hi, there! I stuck on the generating step. The --list-language operation works right, I can see there are lots of choices. But it seems no matter where I put the test.mp4, autosub will not be able to find it, or maybe I've got wrong elsewhere. Would you please help me with this? The error message is down below.

C:\Python27>python.exe C:\Python27\scripts\autosub_app.py -S en -D en test.mp4
Traceback (most recent call last):
  File "C:\Python27\scripts\autosub_app.py", line 284, in <module>
    sys.exit(main())
  File "C:\Python27\scripts\autosub_app.py", line 210, in main
    audio_filename, audio_rate = extract_audio(args.source_path)
  File "C:\Python27\scripts\autosub_app.py", line 120, in extract_audio
    subprocess.check_output(command)
  File "C:\Python27\lib\subprocess.py", line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "C:\Python27\lib\subprocess.py", line 710, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
    startupinfo)
WindowsError: [Error 2]
JeanDown123 commented 8 years ago

Try with path in video C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S es -D es "c:\mypathdownload\test.mp4"

TTonyWang commented 8 years ago

Thx, JeanDown123! I move the ffmpeg.exe to C:\Python and it worked, it's true that the path caused the problem.

Hansdevr commented 8 years ago

I installed everything like you said, but - at first - I couldn't find where any output went to. Later I did the script in a cmd window and then it said that I needed to provide the Google API key.. Any idea what I might have done wrong?

JeanDown123 commented 8 years ago

Hansdevr: "(optionally) translates them to a different language,", Need API KEY(Price).link Free only transcriptions (For Time Limited) not Translates. Use Languaje spoken = Language Desired Example -S es -D es For Spanish -S ja -D ja For Japanese For Translate your Subtitles use other programs, example Subtitle Edit.

Hansdevr commented 8 years ago

Okay, so french to french, dutch to dutch etcetera.. Right? I'll try that!

Hansdevr commented 8 years ago

It worked! But.. I lost a lot of sentences in the translation. It seems like AutoSub has trouble "hearing" some parts. (Damn, these French speak quik..) Would it help to 'normalize" audio (bring it to a higher and more equal level) before translating it?

JeanDown123 commented 8 years ago

A "audio clean" help. Other option, modify code:

For length chunk or segment frame_width=4096 (2000 - 12000)

threshold = percentile(energies, 0.2) 0.2 - 0.7 (for lever noise)

Try "frame_width = 8000"

Hansdevr commented 8 years ago

Thanks Jean, much appreciated! :) I'll let you know what worked best,

Hansdevr commented 8 years ago

Well, to be honest, it didn't make much of a difference.. :( Next, I'm going to try to do normalizing with a copy of the audio track, along with some eq-ing of the highs (low bitrate mp3 audio needs some sooping up...)

BigGreatGrandAwesomeWei commented 8 years ago

Thank you for you work! But after completing speech recognition and the .srt file generated, there is no any text in the .srt file, so sad about it. I checked it once then I corrected the language options, but still nothing.(using a video in Chinese) Then I change a video source which's speech is in English, still nothing. Looks like I have to generate the subtitles manually, still. Just some feed back, thanks!

JeanDown123 commented 8 years ago

What is the duration of the videos you tried? which was the duration of the process? Which gave the console messages? Check the audio files (flac) that are in C:\Users\%username%\AppData\Local\Temp*.flac, these are the files that are sent to the translator,.

ghost commented 8 years ago

@JeanDown123 I'm having the same problem and i checked *.flac files they were all 0KB files. Any solution. Thanks In Advance!

JeanDown123 commented 8 years ago

Try: https://www.youtube.com/watch?v=Ya6Av7uecbg Attach File Subtitles Generated By Autosub. Time Process: 01:15 - about a minute President Obama Addresses the Nation on the BP Oil Spill (inglés).AutoSub.srt.txt

MrNobdy commented 8 years ago

After setting up the path to ffmpeg and after testing if ffmpeg is working or not and it did worked, i keep getting this error message: (knowin that i've a file called px.mp4 in the directory)

px.mp4: No such file or directory
Traceback (most recent call last):
  File "C:\Python27\scripts\autosub_app.py", line 284, in <module>
    sys.exit(main())
  File "C:\Python27\scripts\autosub_app.py", line 210, in main
    audio_filename, audio_rate = extract_audio(args.source_path)
  File "C:\Python27\scripts\autosub_app.py", line 120, in extract_audio
    subprocess.check_output(command)
  File "C:\Python27\lib\subprocess.py", line 574, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['ffmpeg', '-y', '-i', 'px.mp4', '-ac', '1', '-ar', '16000', '-loglevel', 'error', 'c:\\users\\otto\\appdata\\local\\temp\\tmpuj0j75.wav']' returned non-zero exit status 1

I think the trick is the last two lines, maybe.

Help appreciated, thanks!

JeanDown123 commented 8 years ago

MrNobdy , think path file px.mp4. C:\Python27\scripts\autosub_app.py -S en -D en "c:\mydownloads\px.mp4"

ghost commented 8 years ago

Greetings. In trying to translate a video (Japanese) I get this error.

programa o archivo por lotes ejecutable. "stty" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. "stty" no se reconoce como un comando interno o externo,####### | ETA: 0:00:00 programa o archivo por lotes ejecutable. Converting speech regions to FLAC files: 100% |#################| Time: 0:00:11 Performing speech recognition: 100% |###########################| Time: 0:05:10 Error: Subtitle translation requires specified Google Translate API key. See --help for further information.

Please help me

ghost commented 7 years ago

I had try video https://www.youtube.com/watch?v=Ya6Av7uecbg

Converting speech regions to FLAC files: 100% Time 00:00:12 Performing speech recognition: 100% Time 00:00:00

Flac files is okay (not null size), but .sqr file size is 0 kb :( Please, help!

ghost commented 7 years ago

Found via debugger that script need connection internet. Now it's work! :)

Mistursmiley commented 7 years ago

Okay so i copied ffmpeg.exe to C:\python27

but cmd is telling it cant find it.

C:\Users\"NAME">C:\Python27\python.exe C:\Python27\scripts\autosub_app.p y -S en -D en c:\1.ZBrush_Introduction.mkv ffmpeg: Executable not found on machine. Traceback (most recent call last): File "C:\Python27\scripts\autosub_app.py", line 304, in sys.exit(main()) File "C:\Python27\scripts\autosub_app.py", line 230, in main audio_filename, audio_rate = extract_audio(args.source_path) File "C:\Python27\scripts\autosub_app.py", line 140, in extract_audio raise Exception("Dependency not found: ffmpeg") Exception: Dependency not found: ffmpeg

dezea commented 7 years ago

Mistursmiley, I had the same issue - you can make the script work directly with the .wav file (convert it yourself with ffmpeg or something else) and then patch the python script so that it uses the wav file directly. To do this, make the extract_audio function look like this:

def extract_audio(filename, channels=1, rate=16000): return filename, rate

Make sure to adjust the sample rate accordingly (I had a 44100 sample rate) and that it has only one channel (mono). Good luck, it did some pretty decent work for me in french.

huyanh10tin commented 7 years ago

how to make it work auto in a forder?I mean make sub for all file in a folder

dezea commented 7 years ago

@huyanh10tin you could modify the script so it would make a loop with all the files in the folder, or you could make a batch file wich would pass the files to the app one by one (imho it is not a good idea to process all the files at once since the google speech recognition api will probably block your access)

huyanh10tin commented 7 years ago

@dezea sorry,but i dont know python language,please help me,or you could change it for me,thank

JeanDown123 commented 7 years ago

To Install Python: Check "Add Python.exe to Path"? python Or ADD Path (Directory) of File ffmpeg.exe. http://www.computerhope.com/issues/ch000549.htm

stringtheory178 commented 7 years ago

@dezea autosub couldn't find ffmpeg for me either despite being in the same folder. I tried inserting your change to extract_audio, converting the format of the file to .wav, and setting the sample rates the same. However the following error keeps coming up.

Traceback (most recent call last):files:   0% |                | ETA:  --:--:--
  File "C:\Python27\scripts\autosub_app.py", line 295, in <module>
    sys.exit(main())
  File "C:\Python27\scripts\autosub_app.py", line 235, in main
    for i, extracted_region in enumerate(pool.imap(converter, regions)):
  File "C:\Python27\lib\multiprocessing\pool.py", line 668, in next
    raise value
NameError: global name 'false' is not defined
flenoir commented 7 years ago

Hi,

I also have

raise Exception("Dependency not found: ffmpeg") Exception: Dependency not found: ffmpeg

ffmpeg.exe is in C:\python27 and in my PATH

is there a solution instead of extracting wav file ?

thank you

lucasgabriel-m commented 7 years ago

Thank you so much for this! It will be really useful for me. But I'm having some problems using it...

Can someone help me? Thanks in advance! :)

dezea commented 7 years ago

@lucasgabriel-m: Don't know if I've mentioned that:

  1. the audio file must be converted to mono (the google api does not work with stereo files atm) and
  2. the resolution must be correctly specified in the script (eg, if you have set rate=44100 in the script, make sure that corresponds to your audio file). In any of these cases you'll get an empty srt file.

Btw I've managed to rewrite this script in php with some extra features supported by the google api like speech context which is really nice because it improoves recognition quite a lot and added ability to tweak the threshold and phrase lenghts.

dezea commented 7 years ago

@stringtheory178 That looks like a bad edit, try using an editor which has Python syntax checking to spot any issues (also check the lines of the error codes)

stringtheory178 commented 7 years ago

@dezea I'm pretty sure I just copied the line you posted. Maybe it's because my .wav file was stereo not mono. You mentioned a PHP version, any chance you could upload it?

lucasgabriel-m commented 7 years ago

@dezea Thanks for your answer. I'm kind a newbie in this, so I need a little help...

  1. Is there any command I can use to make sure ffmpeg extracts the audio already in mono?
  2. In case my rate was 44100, would I only need to change the script like below? def extract_audio(filename, channels=1, rate=44100): return filename, rate
mosynaq commented 7 years ago

I had some problem with script finding ffmpeg.exe. It was present in c:\python27 but the script just kept on raising error which said it had not found the ffmpeg.exe. So I modified extract_audio function on line 135 throuth 145 in autosub_app.py like this:

def extract_audio(filename, channels=1, rate=16000):
    temp = tempfile.NamedTemporaryFile(suffix='.wav', delete=False)
    if not os.path.isfile(filename):
        print "The given file does not exist: {0}".format(filename)
        raise Exception("Invalid filepath: {0}".format(filename))
    #if not which("ffmpeg"):
    #    print "ffmpeg: Executable not found on machine."
    #    raise Exception("Dependency not found: ffmpeg")
    command = ["ffmpeg.exe", "-y", "-i", filename, "-ac", str(channels), "-ar", str(rate), "-loglevel", "error", temp.name]
    subprocess.check_output(command)
    return temp.name, rate

The difference?

  1. commenting out if not which("ffmpeg"):
  2. commenting out print "ffmpeg: Executable not found on machine."
  3. commenting out raise Exception("Dependency not found: ffmpeg")
  4. and changing command = ["ffmpeg",... to command = ["ffmpeg.exe",...

Simply copy the piece of code above and it's over.

stringtheory178 commented 7 years ago

@mosynaq Cool, that got me past finding ffmpeg.exe, but I still get this error: Traceback (most recent call last):files: 0% | | ETA: --:--:-- File "C:\Python27\scripts\autosub_app.py", line 295, in <module> sys.exit(main()) File "C:\Python27\scripts\autosub_app.py", line 235, in main for i, extracted_region in enumerate(pool.imap(converter, regions)): File "C:\Python27\lib\multiprocessing\pool.py", line 668, in next raise value NameError: global name 'false' is not defined

Something seems to be wrong with the progress bar. what would be an easy way to just not show the progress bar or alternatively just show the percentage?

jxyddtc commented 7 years ago

Sorry to bother... But I'm too stupid that I am stuck in the step"Auto-generating subtitles for any video file"... I really don't know what to do next... Hope anyone can help me, thanks. XD

stringtheory178 commented 7 years ago

@jxyddtc You just put the video you want translated in the python27 folder, copy paste the appropriate language command and change 'youvideo.mp4' to whatever the file name is. If everything is setup right you should get a subtitle file.

Glxblt76 commented 7 years ago

To solve that "Exception: Dependency not found: ffmpeg", I explicitly specified the full path of my ffmpeg file like in this example: command = ["C:\\foo\\bar\\ffmpeg.exe", "-y", "-i", filename, "-ac", str(channels), "-ar", str(rate), "-loglevel", "error", temp.name] and I commented the three previous lines like that:

    #if not which("ffmpeg"):
    #    print "ffmpeg: Executable not found on machine."
    #    raise Exception("Dependency not found: ffmpeg")

And it worked. My solution was very similar to the Mosynaq fix. Believe me it is really a quick fix that works.

OldSchool297 commented 7 years ago

I got this error and i have tried with flac files avi files mp4 files. I use Windows Vista.

Microsoft Windows [Version 6.0.6002] Copyright (c) 2006 Microsoft Corporation. Med ensamrätt.

C:\Users\Vista>cd..

C:\Users>cd..

C:>C:\Python27\scripts\autosub_app.py J:\1.avi -o J:\1.avi.srt -F srt Traceback (most recent call last): File "C:\Python27\scripts\autosub_app.py", line 284, in sys.exit(main()) File "C:\Python27\scripts\autosub_app.py", line 212, in main regions = find_speech_regions(audio_filename) File "C:\Python27\scripts\autosub_app.py", line 125, in find_speech_regions reader = wave.open(filename) File "C:\Python27\lib\wave.py", line 511, in open return Wave_read(f) File "C:\Python27\lib\wave.py", line 164, in init self.initfp(f) File "C:\Python27\lib\wave.py", line 131, in initfp raise Error, 'file does not start with RIFF id' wave.Error: file does not start with RIFF id

C:>

OldSchool297 commented 7 years ago

I solved it by downloading a newer autosub version against the one on githubs site: autosub-0.3.9.tar.gz

C:\Python27\Scripts\pip.exe install https://pypi.python.org/packages/5b/45/e404d9482ec6d584e34a4d24ebb2377486ccd17887515bff38fa521d6619/autosub-0.3.11.tar.gz

And it worked better when i not done this step: Modify with notepad.exe or Notepad++(Edit Text) autosub_app.py 4.1 In line 48 add ", delete=False" temp = tempfile.NamedTemporaryFile(suffix='.flac') by temp = tempfile.NamedTemporaryFile(suffix='.flac', delete=False)

Then i got another error that i saw more people had got: ("Dependency not found: ffmpeg") But i found a solution here in the comments by editing autosub_app.py.

def extract_audio(filename, channels=1, rate=16000): temp = tempfile.NamedTemporaryFile(suffix='.wav', delete=False) if not os.path.isfile(filename): print "The given file does not exist: {0}".format(filename) raise Exception("Invalid filepath: {0}".format(filename)) if not which("ffmpeg"): print "ffmpeg: Executable not found on machine." raise Exception("Dependency not found: ffmpeg") command = ["ffmpeg", "-y", "-i", filename, "-ac", str(channels), "-ar", str(rate), "-loglevel", "error", temp.name] subprocess.check_output(command) return temp.name, rate

But now i got this error when the converting only reach 0%:

Microsoft Windows [Version 6.0.6002] Copyright (c) 2006 Microsoft Corporation. Med ensamrätt.

C:\Users\Vista>cd..

C:\Users>cd..

C:>C:\Python27\scripts\autosub_app.py J:\1.avi -o J:\1.srt -F srt c:\users\Vista\appdata\local\temp\tmpe1vjvu.flac: Permission denied: --:--:-- c:\users\Vista\appdata\local\temp\tmpdpjhir.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpenhi7r.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpvvzpgn.flac: Permission denied Exception in thread Thread-3: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 754, in run self.target(*self.args, **self.kwargs) File "C:\Python27\lib\multiprocessing\pool.py", line 389, in _handle_results task = get() TypeError: ('init__() takes at least 3 arguments (1 given)', <class 'subproces s.CalledProcessError'>, ())

c:\users\Vista\appdata\local\temp\tmpx7kqfd.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpc2yges.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpg5_g4t.flac: Permission denied c:\users\Vista\appdata\local\temp\tmp1e6_io.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpkyrghx.flac: Permission denied c:\users\Vista\appdata\local\temp\tmprllohy.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpuwiaj2.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpstmkrp.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpmf2qqh.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpteumpg.flac: Permission denied c:\users\Vista\appdata\local\temp\tmp_q2dym.flac: Permission denied c:\users\Vista\appdata\local\temp\tmp_fzb4s.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpscilrs.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpcs_nf.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpzbno8f.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpzrblnr.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpirq0gm.flac: Permission denied c:\users\Vista\appdata\local\temp\tmplplrwn.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpv7afku.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpokrsc.flac: Permission denied c:\users\Vista\appdata\local\temp\tmprbs3dv.flac: Permission deniedc:\users\Vista\appdata\local\temp\tmpxevr_u.flac: Permission deniedc:\users\Vista\appdata\ local\temp\tmpnm5wiq.flac: Permission denied

c:\users\Vista\appdata\local\temp\tmpjof1ac.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpct1bpa.flac: Permission deniedc:\users\Vista\appdata\local\temp\tmpbcxlur.flac: Permission deniedc:\users\Vista\appdata\ local\temp\tmpovs1jl.flac: Permission deniedc:\users\Vista\appdata\local\temp\t mpliuwsn.flac: Permission denied

c:\users\Vista\appdata\local\temp\tmpcab4de.flac: Permission denied c:\users\Vista\appdata\local\temp\tmphttq3h.flac: Permission denied c:\users\Vista\appdata\local\temp\tmp8e0sv2.flac: Permission denied c:\users\Vista\appdata\local\temp\tmp7f9ogb.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpws_s1w.flac: Permission denied c:\users\Vista\appdata\local\temp\tmpqrw7bn.flac: Permission deniedc:\users\Vista\appdata\local\temp\tmpu_nmh0.flac: Permission deniedc:\users\Vista\appdata\ local\temp\tmps8zvz5.flac: Permission denied

chharvi commented 7 years ago

How to convert online videos.

SFNasty commented 7 years ago

PS C:\Users\alan> C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S en -D en YouVideo.mp4 The given file does not exist: YouVideo.mp4 Traceback (most recent call last): File "C:\Python27\scripts\autosub_app.py", line 305, in sys.exit(main()) File "C:\Python27\scripts\autosub_app.py", line 231, in main audio_filename, audio_rate = extract_audio(args.source_path) File "C:\Python27\scripts\autosub_app.py", line 138, in extract_audio raise Exception("Invalid filepath: {0}".format(filename)) Exception: Invalid filepath: YouVideo.mp4

OldSchool297 commented 7 years ago

Have you tried? Replace J:\1. by the folderlocation of your file and the filename and ending etc avi, mp4.

C:\Python27\scripts\autosub_app.py J:\1.avi -o J:\1.avi.srt -F srt

SFNasty commented 7 years ago

C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S en -D en YouVideo.mp4

My file name is MP4, President Obama Addresses the Nation, and I rename to "YouVideo.mp4" The Python progamme it's in C:\ !

OldSchool297 commented 7 years ago

Sorry try: C:\Python27\scripts\autosub_app.py C:\Python27\YouVideo.mp4 -o C:\Python27\YouVideo.srt -F srt

SFNasty commented 7 years ago

Au caractère Ligne:1 : 4

SFNasty commented 7 years ago

C:\Python27\scripts\autosub_app.py C:\Python27\YouVideo.mp4 -o C:\Python27\YouVideo.srt -F srt not working too...

SFNasty commented 7 years ago

any one can make a pach.exe ?