ubuntuusers.de

Am Sonntag, 24.11, wird gegen 16 Uhr eine Inyoka-Version ausgerollt. Das Portal kann für ein paar Minuten nicht erreichbar sein.

pdf-Datei in mp3-Datei konvertieren (pdf2mp3)

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

zephir

Avatar von zephir

Anmeldungsdatum:
20. März 2006

Beiträge: 2760

Danke, den Tip werde ich mal mit dem skript abspeichern. Im Moment habe ich keine Verwendung dafür, war nur neugierig, aber kann ja noch kommen. Etwas sehr schnell gelesen war es wirklich.

Bin jedenfalls beeindruckt was alles geht, beim lesen der Überschrift dachte ich erst es wäre ein scherz.

Chriz88

Anmeldungsdatum:
21. September 2007

Beiträge: 137

Super Projekt, vielen Dank!

froggydancer

Anmeldungsdatum:
6. Januar 2010

Beiträge: 156

😀 Das ist ja ein geiles Projekt, Daumen hoch 👍

rennau80 schrieb:

Verbesserungsvorschläge sind willkommen!

Na wenn das so ist, will ich mich mal nicht zu sehr zurückhalten:

Ich würde den Zwischenschritt mit der .wav-Datei überspringen, wenn eine mp3 das Ziel ist, und dafür von espeak direkt zu lame durchpipen. Damit könnte die Zeile dann z.B. so aussehen:

[...]
    os.popen('cat ' + input_ascii_file +\
     '|sed \'s/[^a-zA-Z .,!?]//g\'|espeak --stdout -v' + language + ' -w ' + output_wav_file[:-4] + '.wav' +\
     '|lame -f - ' + input_wav_file[:-4] + '.mp3')
[...]

Dadurch geht das Umwandeln schneller und frisst weniger (temporären) Festplattenspeicher.

Außerdem könnten ein paar Anführungszeichen in den Shell-Aufrufen nicht schaden, wegen Leerzeichen in Dateinamen etc.

Weiter so, Froggy

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

finde das Projekt auch ganz nett 👍 und habe es mir nicht nehmen lassen mit meinen bescheidenen Python-kenntnissen am Skript herum zu doktorn. Ich habe versucht die Aufrufe von "os.system" durch subprocess zu ersetzen bzw. durch andere interne Python-Module.Einzig in der "def join_wav_files(filename_out):" hab ich den Aufruf von "wavmerge" nicht mit "subprocess" hin bekommen.Wenn ich

os.system('wavmerge -o merged.wav ' + join_wav)

ersetze durch

call(['wavmerge', '-o', 'merged.wav', join_wav])

bekomme ich diese Fehlermeldung

Must pass filenames of wave files to merge.
Usage: wavmerge [-o outfile] mergefiles...
Traceback (most recent call last):
  File "./pdf2mp3.py", line 179, in <module>
    ret = main()
  File "./pdf2mp3.py", line 120, in main
    join_wav_files(filename_out)
  File "./pdf2mp3.py", line 176, in join_wav_files
    os.rename('merged.wav', filename_out[:-4] + '.wav')
OSError: [Errno 2] No such file or directory

und es wird mir auch keine .mp3 Datei erstellt.Vielleicht hat da ja jemand der sich auskennt eine Idee zu.Ansonsten scheint das geänderte Skript fehlerfrei zu laufen.

Habe den Code mal ausgelagert > pdf2mp3.py

Gruß...busfahrer

murasame

Anmeldungsdatum:
4. Januar 2007

Beiträge: 78

Wohnort: Westerwald

Klasse Projekt. Da suche ich nach einem Programm um meine Studienordner vorlesen zu lassen und werde wie sooft bei ubuntu fündig.

Allerdings hab ich hier ein Problem. Die pdf wird scheinbar gelesen und in eine wav geschrieben, diese schwankt in der Größe allerdings bei ca 200kB und wird nicht größer. Demnach kann da ja dann auch keine mp3 herauskommen, was es aber auch nicht tut.

Hier der von mir eingegebene Befehl

pdf2mp3 -v de -f 03908.pdf -o Verwaltung.mp3

Hat wer eine Idee? Über espeak kann ich mir die pdf auch vorlesen lassen.

phunk

Avatar von phunk

Anmeldungsdatum:
23. Oktober 2005

Beiträge: 105

Wohnort: Bonn-Friesdorf

danke für das script, das finde ich total klasse.

Ich hätte noch einen Vorschlag: statt wavebreaker (wavmerge) ließe sich sox zum Verbinden der wavedateien verwenden? Bei der Verwendung von sox könnte man sogar auch auf lame verzichten, da sox auch audioencoding beherrscht.

http://sox.sourceforge.net

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

murasame schrieb:

Hat wer eine Idee? Über espeak kann ich mir die pdf auch vorlesen lassen.

Ich kann mich dunkel erinnern das ich ein ähnliches Problem hatte.Wenn die .pdf zu groß war, dann wurde mir nur ein kleines Stück konvertiert.Das lag anscheinend daran das schon in .mp3 konvertiert wurde, obwohl die .wav noch nicht komplett auf die Platte geschrieben war.Deshalb hatte ich im Skript in der def convert_to_wav in Zeile 147 ein time.sleep(3) eingebaut.Damit war das Problem bei mir erledigt.Du kannst ja mal in besagter Zeile das time.sleep höher setzen, z.B. auf time.sleep(10).

Gruß...busfahrer

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

@ murasame

Schau dir mal das Skript unter Baustelle/Book-To-MP3 an, die Version für Maverick läuft; muss noch ein wenig "debugged" werden, aber die Ergebnisse sind völlig in Ordnung.

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi

Hab mal eine Wiki-Artikel dazu aufgesetzt: Baustelle/pdf2mp3

so long
hank

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

hab das Skript noch mal überarbeitet.Es läuft bei mir fehlerfrei.Bevor man es aber im entsprechenden Wikiartikel verlinkt, sollte es noch mal von jemandem getestet werden.

Gruß...busfahrer

pdf2mp3.py (5.3 KiB)
Download pdf2mp3.py

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

hab noch mal ein wenig Finetuning betrieben und es wäre immer noch schön wenn jemand noch mal das Skript testet.

Gruß...busfahrer

pdf2mp3.py (5.5 KiB)
Download pdf2mp3.py

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Hab' gerade mal mit einer PDF getestet, funktioniert, aber die Qualität ist doch etwas arg "ruppig", da sollte man noch an den Pausen zwischen den Wörtern arbeiten - die eSpeak-g-Option sollte doch einbaubar sein , oder?

so long
hank

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

erst mal Danke für die Rückmeldung.Habe jetzt die Optionen

-s, --speed
Speed in words per minute, 80 to 390,
default is 170
und

-g, --gap
Word gap.Pause between words,units of 10mS at the 
default speed

eingebaut.Diese Optionen können jetzt verwendet werden, müssen aber nicht.Heißt das Prog läuft auch wenn man nur die Standardoptionen -v, -f, -o nutzt.Wäre schön wenn das noch mal getestet wird und man sich den ersten Teil des Hilfetextes mal anschaut ob man das so lassen kann.

Gruß...busfahrer

pdf2mp3.py (6.3 KiB)
Download pdf2mp3.py

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Ich geb dann mal ein leises *push* von mir, in der Hoffnung noch einmal Feedback zu bekommen ☺

Gruß...busfahrer

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Vielleicht könnte Heinrich Schwietering noch mal kurz testen und wenn alles i.O. ist das Skript auch gleich verlinken 😉

Gruß...busfahrer