rennau80
Anmeldungsdatum: 10. November 2009
Beiträge: Zähle...
Wohnort: Anchorage
|
Hi: da ich während der mittagspause oft joggen gehe und dabei trotzdem ein wenig für die arbeit tun will (das schlechte gewissen...), habe ich ein kleines script geschrieben, das pdf dateien in mp3 umwandelt. Mit dem handy oder mp3-player kann man sich den kram dann perfekt unterwegs anhören. das klappt natürlich nur für text: formeln, tabellen und co kann man sich natürlich nicht anhören.
Im netz gibt's zum thema viel sinnloses zeug, viel kommerzielle software und tote links oder linux-beiträge bei denen man sich alles selbst zusammenreimen muss und es dann einfach nicht funktionieren will. Das skript hier funktioniert bei mir einwandfrei, die stimme ist aber nicht die beste (trotzdem verständlich). Verbesserungsvorschläge sind willkommen! Einfach eine datei mit z.b. dem namen pdf2mp3.py anlegen und mit folgendem inhalt füllen: #!/usr/bin/python
# script converts pdf-file to mp3-file
#
# hannes rennau - january 2010
# made work on ubuntu karmic koala 9.10
# feel free to share
# LIST OF PACKAGES NEEDED:
# you need to install the following packages:
# sudo apt-get install python
# sudo apt-get install pdftotext
# sudo apt-get install festival
# sudo apt-get install festvox-rablpc16k
# sudo apt-get install lame
# HOW TO USE:
# just call script via: ./pdf2mp3.py yourfilename
# or: ./pdf2mp3.py yourfilename.pdf
# in case you've lots of tables, equations or whatever else in your pdf,
# it's a nice think if you delete all strange symbol character stuff in
# in the txt-file and then run the script again but comment the line
# starting with os.popen('pdftotext...
import os,sys
import string
# get filenname
pdffile = sys.argv[1]
pdffile = pdffile[:-4] if pdffile[-4:]=='.pdf' else pdffile
if os.path.isfile(str(pdffile) + '.pdf'):
print 'converting pdf to ascii...'
os.popen('pdftotext ' + str(pdffile) + '.pdf ' + str(pdffile) + '.txt')
print 'start converting ascii to wav...'
os.popen('cat ' + str(pdffile) + '.txt\
|sed \'s/[^a-zA-Z .,!?]//g\'|text2wave -o ' + str(pdffile) + '.wav')
print 'converting to mp3...'
os.popen('lame -f ' + str(pdffile) + '.wav ' + str(pdffile) + '.mp3')
os.popen('rm -f ' + str(pdffile) + '.wav')
print 'finished. don\'t forget to delete txt file if you don\'t need it'
else:
print 'file does not exist'
# that's it. have fun!!! :) anschließend die Datei ausführbar machen mit:
chmod +x pdf2mp3.py und dann systemweit verfügbar machen mit:
sudo cp pdf2mp3.py /usr/bin/
wenn es nach /usr/bin kopiert wurde, könnt ihr das script von jedem verzeichnis aus aufrufen:
pdf2mp3.py yourfilename
oder:
pdf2mp3.py yourfilename.pdf have fun!! PS: Zur info, die stimme in dem script is english, die deutsche stimme sollte man hier runterladen können: http://cslu.cse.ogi.edu/tts/download/ Falls sie jemand benötigt (nicht so abwegig hier im deutschen ubuntu-forum), kann hoffentlich jemand posten wie man sie installiert und dann auf default setzt.
Moderiert von redknight: Ins Projektforum verschoben. Viel Spaß beim weiterbearbeiten und danke für das Veröffentlichen deiner Lösung
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Eh, krasse Scheisse... Danke, dass du uns an deiner Errungenschaft teilhaben lässt 👍 Wäre vielleicht noch sinnvoll, wenn du eine Lizenz und deine Email-Adresse in den Header der Datei schreibst. Bei GPL-Lizenzierung sieht das meist ungefähr so aus:
# ###################################################
# <Name Of Programm>
#
# Copyright (C) 2010 <Your Name>
# <youremail@provider.foo>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# ################################################### Mag man jetzt drüber streiten, ob das Sinn macht, aber ich persönlich finde, man sollte diese Möglichkeit bei jeder Veröffentlichung dieser Art nutzen. Im Vergleich zu einem Script, dass nur für einen ganz bestimmten Anwendungsfall geschrieben wurde, hat das hier einen weit allgemeingültigeren Programmcharakter.
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
cool. Danke! 👍 Aber gibt es pdftotext eigentlich erst ab Karmic?
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Ah, da hätten wir einen kleinen Fehler. pdftotext ist ein Programm, dass aus dem Paket poppler-utils stammt. Außerdem sehe ich gerade, dass die Angabe der zuinstallierenden Abhängigkeiten nicht unbedingt optimal gelöst ist. Das würde besser in eine Zeile gehen, damit man das so direkt in den Terminal kopieren kann:
sudo apt-get install python poppler-utils festival festvox-rablpc16k lame Edit:
Danke, colombo1980... Korrigiert 😬
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
dauerflucher schrieb: Ah, da hätten wir einen kleinen Fehler. pdftotext ist ein Programm, dass aus dem Paket poppler-utils stammt. Außerdem sehe ich gerade, dass die Angabe der zuinstallierenden Abhängigkeiten nicht unbedingt optimal gelöst ist. Das würde besser in eine Zeile gehen, damit man das so direkt in den Terminal kopieren kann:
sudo apt-get install python poppler-utils festival festvox-rablepc16k lame
ein e zuviel 😉
sudo apt-get install python poppler-utils festival festvox-rablpc16k lame
|
rennau80
(Themenstarter)
Anmeldungsdatum: 10. November 2009
Beiträge: 23
Wohnort: Anchorage
|
sehr schön, danke für die tips, habe ich mal eingearbeitet. Habe das progrämmchen noch ein wenig modifiziert: Es gibt nun die option auch .txt und .dat dateien in mp3 umzuwandeln: pdf2mp3.py yourfilename.dat
oder
pdf2mp3.py yourfilename.txt
oder
pdf2mp3.py yourfilename.pdf
- pdf2mp3.py (3.0 KiB)
- Download pdf2mp3.py
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
|
ostrixner
Anmeldungsdatum: 3. Mai 2007
Beiträge: Zähle...
|
Hallo, das Tool ist ja prima von der Idee, aber bei deutschen Texten als PDF mit elnglischsprachigen Buchstabierer macht das keinen Spass. Hat jemand vielleicht das schon mit einer deutsche Stimme hingekriegt klappt bei mir irgendwie nicht. ubuntu 10.04 Grüße
oliver
|
rennau80
(Themenstarter)
Anmeldungsdatum: 10. November 2009
Beiträge: 23
Wohnort: Anchorage
|
komme gerade nicht zum coden, aber eine möglichkeit wäre das tool espeak in deutscher sprache zu verwenden und zwar aufruf in der shell via:
espeak -vde -f text.txt -w audio.wav wobei text.txt die ascii datei mit dem text ist und audio.wav die datei für den audio-player. ich werde das beizeiten mal ins script einbauen, so dass es über:
pdf2mp3.py -v de ... (für deutsche stimme)
>>>pdf2mp3.py -v en ... (für englische stimme)
aufgerufen werden kann. werde das diese woche mal zusammenbasten und ein kleines howto dazu im forum schreiben. ☺
|
rennau80
(Themenstarter)
Anmeldungsdatum: 10. November 2009
Beiträge: 23
Wohnort: Anchorage
|
nun kann man verschiedene sprachen verwenden, die kommandozeile sieht auch etwas anders aus, Beispiele: ./pdf2mp3 -v en -f input.pdf -o output.mp3 (pdf->mp3 engische sprache) ./pdf2mp3 -v de -f input.pdf -o output.mp3 (pdf->mp3 deutsche sprache) oder aber auch ./pdf2mp3 -v it -f input.txt -o output.mp3 (txt->mp3 italienisch) ./pdf2mp3 -v fr -f input.dat -o output.wav (dat->wav französisch) da espeak im hintergrund verwendet wird, hier nur eine kleine auswahl der nun verfügbaren sprachen:
afrikaans (af), bosnian (bs), danish (da), spanish (es), french (fr), italian (it), norwegian (no), swedish (sv), turkish (tr), Mandarin (zh), ... neue notwendige pakete sind espeak und wavebreaker:
sudo apt-get install python poppler-utils festival festvox-rablpc16k lame espeak wavbreaker
- pdf2mp3 (6.5 KiB)
- Download pdf2mp3
|
fofolokolipalu
Anmeldungsdatum: 1. April 2007
Beiträge: 811
|
Auch wenn ich da gerade keine Verwendung für habe: Sehr cool, dass du uns daran teilhaben lässt. Spirit of Ubuntu 😉 btw: In meinen Augen passt der Thread eher ins Projekte-Forum.
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Yay, von mir nochmals ein standesgemäßes Dankeschön für dein Engagement. Schreibst du als nächstes dann noch ein Frontend, damit ich das Programm meiner Mama verständlich zugänglich machen kann? 😬
|
rennau80
(Themenstarter)
Anmeldungsdatum: 10. November 2009
Beiträge: 23
Wohnort: Anchorage
|
dauerflucher schrieb: Yay, von mir nochmals ein standesgemäßes Dankeschön für dein Engagement. Schreibst du als nächstes dann noch ein Frontend, damit ich das Programm meiner Mama verständlich zugänglich machen kann? 😬
hehe, ne GUI wär schon was schönes, fürwahr...
|
zephir
Anmeldungsdatum: 20. März 2006
Beiträge: 2760
|
Danke für das veröffentlichen des skriptes. Funktioniert super (englisch und deutsch), auch wenn dieses automatische Vorlesen sehr gewöhnungsbedürftig ist. Gruß zephir
|
rennau80
(Themenstarter)
Anmeldungsdatum: 10. November 2009
Beiträge: 23
Wohnort: Anchorage
|
es sollte sich noch die geschwindigkeit einstellen lassen (mittels espeak) oder auch andere optionen, vielleicht ist es dann besser verständlich. (?) unter espeak gibt es folgende optionen in dieser richtung:
-a <integer>
Amplitude, 0 to 200, default is 100
-g <integer>
Word gap. Pause between words, units of 10mS at the default speed
-p <integer>
Pitch adjustment, 0 to 99, default is 50
-s <integer>
Speed in words per minute, 80 to 390, default is 170 dazu einfach an Zeile 129 im Code 'espeak' durch z.B. 'espeak -s 140' ersetzen damit es wirksam wird.
|