readbeyond / aeneas

aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment)
http://www.readbeyond.it/aeneas/
GNU Affero General Public License v3.0
2.45k stars 218 forks source link

Language 'jpn' is not supported by the selected TTS engine #222

Closed jeffbernst closed 4 years ago

jeffbernst commented 5 years ago

Hi,

First of all, thanks for your work on this amazing tool!

I'm having some trouble getting Japanese to work in the command line. I saw a similar problem in this issue about Arabic:

https://github.com/readbeyond/aeneas/issues/214

Here's the command I've been playing around with:

python -m aeneas.tools.execute_task hp.mp3 hp.txt  "task_language=jp|is_text_type=mplain|os_task_file_format=srt" hp.srt -r "tts=macos|allow_unlisted_languages=True"

I've tried using a language of "jp" and "jpn" as well as tts set to "macos", "espeak-ng", and not setting a tts at all.

Is there a clear mistake in my approach?

Thanks!

ozdefir commented 5 years ago

Hi,

The equal sign is missing in the runtime configuration argument of your command. You should have it like -r="tts=macos|allow_unlisted_languages=True"

Keep in mind that espeak-ng's Japanese tts completely ignores Kanji. When a user requested Japanese support for Readiance (now defunct), I used a transliteration tool, "kakasi" to convert the characters before TTS. He said the results were reasonable. If anyone needs the codes let me know.

Joee1995 commented 5 years ago

I try this command:

python -m aeneas.tools.execute_task 1.mp3 1.txt \ "task_language=jp|is_text_type=mplain|os_task_file_format=srt" 1.srt \ -r="tts=macos|allow_unlisted_languages=True"

but receive an error like this:

[WARN] The default input encoding is not UTF-8. [WARN] You might want to set 'PYTHONIOENCODING=UTF-8' in your shell. [WARN] The default output encoding is not UTF-8. [WARN] You might want to set 'PYTHONIOENCODING=UTF-8' in your shell. [INFO] Validating config string (specify --skip-validator to bypass)... [INFO] Validating config string... done [INFO] Creating task... [INFO] Creating task... done [INFO] Executing task... [ERRO] An unexpected error occurred while executing the task: [ERRO] Unexpected error while executing task : Both the C extension and the pure Python code failed. (Wrong arguments? Input too big?)

I think there is sth wrong.

tslater commented 4 years ago

I'm not on macos. Do you know is this will work for AWS Polly as well?

pettarin commented 4 years ago

@tslater AWS Polly TTS wrapper is included, and at the time I implemented it was working, but it has been a while since I have not checked it. Also note that in the upcoming aeneas v1.7.4, I will update the list of languages reflecting new languages added to eSpeak-ng ( https://github.com/espeak-ng/espeak-ng/blob/master/docs/languages.md ), including Japanese.

sachaarbonel commented 4 years ago

Hi, @pettarin thank you for this great library. Do you know when we can expect a new release?

kanjieater commented 3 years ago

Hi,

The equal sign is missing in the runtime configuration argument of your command. You should have it like -r="tts=macos|allow_unlisted_languages=True"

Keep in mind that espeak-ng's Japanese tts completely ignores Kanji. When a user requested Japanese support for Readiance (now defunct), I used a transliteration tool, "kakasi" to convert the characters before TTS. He said the results were reasonable. If anyone needs the codes let me know.

Can we get the code for conversion with kakasi that you mentioned?

I try this command:

python -m aeneas.tools.execute_task 1.mp3 1.txt \ "task_language=jp|is_text_type=mplain|os_task_file_format=srt" 1.srt \ -r="tts=macos|allow_unlisted_languages=True"

but receive an error like this:

[WARN] The default input encoding is not UTF-8. [WARN] You might want to set 'PYTHONIOENCODING=UTF-8' in your shell. [WARN] The default output encoding is not UTF-8. [WARN] You might want to set 'PYTHONIOENCODING=UTF-8' in your shell. [INFO] Validating config string (specify --skip-validator to bypass)... [INFO] Validating config string... done [INFO] Creating task... [INFO] Creating task... done [INFO] Executing task... [ERRO] An unexpected error occurred while executing the task: [ERRO] Unexpected error while executing task : Both the C extension and the pure Python code failed. (Wrong arguments? Input too big?)

I think there is sth wrong.

I'm getting the same thing. With the --verbose flag I see:

python -m aeneas.tools.execute_task \
./work/ars5/merged.mp4 \
./work/ars5/script.txt.split.txt \
"task_language=JA|tts=espeak-ng|allow_unlisted_languages=True|os_task_file_format=srt|is_text_type=plain|task_adjust_boundary_no_zero=True|is_audio_file_head_length=0|is_audio_file_process_length=60" \
./output/map.srt \
--output-html \
-r="allow_unlisted_languages=True" \
--verbose
[CRIT] AudioFile: Audio file format not supported by ffmpeg
[CRIT] ESPEAKTTSWrapper: An unexpected error occurred while reading audio data
[CRIT] ESPEAKTTSWrapper: Audio file format not supported by ffmpeg
[DEBU] ESPEAKTTSWrapper: Removing temporary output file path '/tmp/tmpt3e172m9.wav'
[CRIT] ESPEAKTTSWrapper: An unexpected error occurred in helper_function
[CRIT] ESPEAKTTSWrapper: An unexpected error occurred in loop_function
[DEBU] ESPEAKTTSWrapper: Synthesizing multiple via subprocess... done
[CRIT] ExecuteTask: STEP 3 (synthesize text) FAILURE
[CRIT] ExecuteTask: Unexpected error while executing task
[CRIT] ExecuteTask: Both the C extension and the pure Python code failed. (Wrong arguments? Input too big?)
[ERRO] CLI: An unexpected error occurred while executing the task:
[ERRO] An unexpected error occurred while executing the task:
[ERRO] CLI: Unexpected error while executing task : Both the C extension and the pure Python code failed. (Wrong arguments? Input too big?)
[ERRO] Unexpected error while executing task : Both the C extension and the pure Python code failed. (Wrong arguments? Input too big?)
[DEBU] CLI: Execution completed with code 1

It seems there's a critical issue with Audio file format not supported by ffmpeg

Upon investigation, I think it may be that espeak-ng isn't including the Japanese due to another bug: https://github.com/espeak-ng/espeak-ng/issues/864