mon problème commence ici:
Erreurs de module pyttsx et gTTS
gTTS fonctionne bien, prend du texte à partir d'un fichier texte, mais crée d'abord un fichier mp3, puis si je veux écouter, je dois appeler ce mp3, donc c'est bien, mais ce serait mieux si je pouvais éviter tous les fichiers audio et simplement lire fichier texte. peut-être que je peux utiliser Google Voice pour lire à partir d'un fichier texte ..? de toute façon la question principale est maintenant autre
si je peux utiliser uniquement gTS, quel est le meilleur moyen de lire les fichiers mp3 sur Windows 10-64 bits, Python 3.5?
ok avec os:
import os
os.startfile("D:\my path/rec1.mp3")
c'est bien, mais je ne veux pas utiliser le lecteur par défaut, j'ai besoin de quelque chose comme simpleaudio pour mp3 ...
avec pygame, j’ai un problème d’installation et je ne sais pas trop comment l’utiliser de cette façon:
from pygame import mixer
mixer.init()
mixer.music.load('D:/my path/rec1.mp3')
mixer.music.play()
vLC juste comment l'installer? avec easy_install vlc
j'ai eu l'erreur: could not find suitable distribution for requirement.parse ('vlc')
et avec pip install vlc
erreur: could not find a version that satisfies the requirement vlc (from versions: ) no matching distribution found for vlc
import vlc
p = vlc.MediaPlayer("file:/my path/rec1.mp3")
p.play()
p.stop()
avec pyglet:
import pyglet
music=pyglet.media.load('D:/my path/rec1.mp3')
music.play()
pyglet.app.run()
J'ai eu cette erreur:
'AVbin is required to decode compressed media')
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media
le sous-processus utilise également le lecteur par défaut:
import subprocess
sound_program = "path to player"
sound_file = "D:/my path/rec1.mp3"
subprocess.call([sound_program, sound_file])
avec mp3play, je ne sais pas comment l'utiliser:
import mp3play
filename = (r'D:\my path/rec1.mp3')
clip = mp3play.load(filename)
clip.play()
J'ai essayé de cette façon:
filename = ('D:\my path/rec1.mp3')
par ici:
filename = r'D:\my path/rec1.mp3'
Dans tous les cas, j'ai eu une erreur:
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py", line 18, in <module>
import mp3play
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\mp3play\__init__.py", line 4, in <module>
from .windows import AudioClip as _PlatformSpecificAudioClip
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\mp3play\windows.py", line 27
print 'Error %s for "%s": %s' % (str(err), txt, buf)
^
SyntaxError: invalid syntax
ok donc avec pydub:
from pydub import AudioSegment
from gtts import gTTS
import simpleaudio as sa
blabla = ('my voice')
tts = gTTS(text=blabla, lang='en')
tts.save("D:/my path/rec.mp3")
rec = AudioSegment.from_mp3("D:\my path\rec.mp3")
rec.export("rec.wav", format="wav")
#rec = AudioSegment.ffmpeg ("D:\my path\rec.mp3")
#rec.export("rec.wav", format="wav")
#rec = AudioSegment.converter ("D:\my path\rec.mp3")
#rec.export("rec.wav", format="wav")
wave_obj = sa.WaveObject.from_wave_file('D:/my path/rec.wav'')
play_obj = wave_obj.play()
play_obj.wait_done()
Erreurs dans la séquence en premier avec AudioSegment.from_mp3
:
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File " D:/dt/PyCharm_project/0_ASK.py", line 9, in <module>
rec = AudioSegment.from_mp3("D:\my path\rec.mp3")
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\audio_segment.py", line 438, in from_mp3
return cls.from_file(file, 'mp3')
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\audio_segment.py", line 366, in from_file
file = _fd_or_path_or_tempfile(file, 'rb', tempfile=False)
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\utils.py", line 59, in _fd_or_path_or_tempfile
fd = open(fd, mode=mode)
OSError: [Errno 22] Invalid argument: 'D:\my path\rec.mp3'
avec AudioSegment.ffmpeg
:
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py ", line 12, in <module>
rec = AudioSegment.ffmpeg ("D:\my path\rec.mp3")
TypeError: 'str' object is not callable
avec AudioSegment.converter
:
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py", line 15, in <module>
rec = AudioSegment.converter ("D:\my path\rec.mp3")
TypeError: 'str' object is not callable
pas sûr peut-être webbrowser, mais comment l'installer?
import webbrowser
webbrowser.open("D:/my path/rec1.mp3")
Même problème ici. Cela fonctionne avec playsound 1.2.1 pour moi.
Installer avec:
$ pip install playsound
test avec:
>>>from playsound import playsound
>>>playsound('/path/to/a/sound/file/you/want/to/play.mp3')
Vous pouvez utiliser "sous-processus".
from subprocess import call
from gtts import gTTS
import os
blabla = input('Type IN: ')
tts = gTTS(text=blabla, lang='en')
tts.save("test.mp3")
call(["vlc", "test.mp3"])
Ce programme demande à l’utilisateur de saisir quoi que ce soit et il dira que, par le biais de vlc.
J'utilise ceci sous Linux, mais je ne le sais pas maintenant si cela fonctionne sous Windows.
avec pygame, j’ai un problème d’installation et je ne sais pas trop comment l’utiliser de cette façon:
Pouvez-vous fournir plus de détails sur l'erreur d'installation de pygame ?
J'ai pu utiliserPYGAMEavec ce code, où "hello.mp3" est un fichier du même répertoire
from gtts import gTTS
tts = gTTS(text='Hello', lang='en')
tts.save("hello.mp3")
from Tkinter import *
root = Tk()
from pygame import mixer
mixer.init()
mixer.music.load('hello.mp3')
mixer.music.play()
root.mainloop()
vLC juste comment l'installer?
J'ai aussi utiliséVLC. Je l'ai installé avec ces commandes:
Sudo pip install python-vlc
Et j'ai eu cette erreur:
NameError: no function 'libvlc_new
Alors, j'ai essayé la commande:
Sudo apt-get install vlc
Et cela a fonctionné avec ce code:
from gtts import gTTS
tts = gTTS(text='Hello', lang='en')
tts.save("hello.mp3")
from Tkinter import *
root = Tk()
import vlc
p = vlc.MediaPlayer("hello.mp3")
p.play()
root.mainloop()
J'espère que cela vous aidera.
Cela fera le travail et sans avoir besoin de fichiers:
def say(text, lang='en'):
""" Speak the provided text.
"""
import pygame
from gtts import gTTS
import io
tts = gTTS(text=text, lang=lang, slow=False)
pygame.mixer.init()
pygame.init() # this is needed for pygame.event.* and needs to be called after mixer.init() otherwise no sound is played
with io.BytesIO() as f: # use a memory stream
tts.write_to_fp(f)
f.seek(0)
pygame.mixer.music.load(f)
pygame.mixer.music.set_endevent(pygame.USEREVENT)
pygame.event.set_allowed(pygame.USEREVENT)
pygame.mixer.music.play()
pygame.event.wait() # play() is asynchronous. This wait forces the speaking to be finished before closing f and returning
Vous pouvez utiliser le module playsound
from playsound import playsound
playsound(file.mp3)
Boom ça y est.il joue la bonne façon de l'audio fonctionne comme un charme
Je pense que vous recherchez:
C'est un TTS multiplate-forme hors ligne compatible avec python3 et python2.
pip install pyttsx3
Si vous voulez un TTS hors ligne pour python, contrairement à GTTS, pyttsx3 est votre meilleur choix à mon avis.
Si une erreur AVbin se produit ...
Commencez par télécharger AVbin.exe et installez-le Puis allez sur le disque local C -> Windows -> System32 -> recherchez Avbin.dll et copiez ce fichier Puis collez ce fichier dans votre répertoire racine
L'erreur disparaîtra
webbrowser
devrait faire partie de votre installation python standard . Vérifiez s'il existe un webbrowser.py
sous C:\Your_Python_Folder\Lib
.
Le code ci-dessous fonctionne très bien pour moi car webbrowser.py
est présent dans le dossier mentionné ci-dessus.
import webbrowser
webbrowser.open("rec.mp3")
import os
os.system("music.mp3")
Je ne connais pas la solution à toutes les questions, mais le problème que vous rencontrez avec pydub est que vous n'avez pas installé ffmpeg ou avconv. Il y a des instructions sur le pydub github :
Les fenêtres:
- Téléchargez et extrayez libav à partir des binaires Windows fournis ici.
- Ajoutez le dossier libav/bin à votre envvar PATH
- pip installer pydub
Si vous êtes sur Windows alors cela devrait faire le travail,
import winsound
winsound.PlaySound('your_file.mp3',winsound.SND_FILENAME)
Rappelez-vous que ce paquet n'est présent que dans Python pour Windows.
installez pyglet en utilisant python -m pip install pyglet
Télécharger installé ici Lien vers la configuration AVbin (c'est un must)
32/64 bit
import pyglet
song = pyglet.media.load('file.mp3')
song.play()
pyglet.app.run()
C'est tout.