Как играть в mp3

Моя проблема начинается здесь:

ошибки модуля pyttsx и gTTS

gTTS работает хорошо, берет текст из текстового файла, но сначала создает mp3-файл, затем, если я хочу прослушать, я должен назвать это mp3, так что это хорошо, но было бы лучше, если бы я мог избегать любых аудиофайлов и получать только чтение из текстовый файл. может быть, как-то я могу использовать Google Voice для чтения из текстового файла..? в любом случае главный вопрос сейчас другой

если я могу использовать только gTTS, что является лучшим способом для воспроизведения mp3 на Windows 10-64 бит, Python 3.5

хорошо с ОС:

import os
os.startfile("D:\my path/rec1.mp3") 

это хорошо, но я не хочу использовать плеер по умолчанию, нужно что-то вроде simpleaudio для mp3...

с pygame у меня проблема с установкой и я не уверен, насколько хорошо это использовать таким образом:

from pygame import mixer 

mixer.init()
mixer.music.load('D:/my path/rec1.mp3')
mixer.music.play()

VLC только как его установить? с easy_install vlc Я получил ошибку: could not find suitable distribution for requirement.parse ('vlc') и с pip install vlc ошибка: 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()

с пиглетом:

import pyglet

music=pyglet.media.load('D:/my path/rec1.mp3')
music.play()
pyglet.app.run()

Я получил эту ошибку:

'AVbin is required to decode compressed media')
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media

подпроцесс также использует плеер по умолчанию:

import subprocess

sound_program = "path to player"
sound_file = "D:/my path/rec1.mp3"
subprocess.call([sound_program, sound_file])

с mp3play, не уверен, как его использовать:

import mp3play

filename = (r'D:\my path/rec1.mp3')
clip = mp3play.load(filename)
clip.play()

Я попробовал это так:

  filename = ('D:\my path/rec1.mp3')

сюда:

  filename = r'D:\my path/rec1.mp3'

Во всех случаях я получил ошибку:

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

хорошо, так с 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()

Ошибки в последовательности сначала с 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'

с 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

с 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

не уверен, может быть, веб-браузер, но как его установить?

import webbrowser
webbrowser.open("D:/my path/rec1.mp3")

11 ответов

Та же проблема здесь. Он работает с PlaySound 1.2.1 для меня.

Установить с помощью:

$ pip install playsound

тест с:

>>>from playsound import playsound
>>>playsound('/path/to/a/sound/file/you/want/to/play.mp3')

Вы можете использовать "подпроцесс".

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"])

Эта программа просит пользователя ввести что-нибудь, и он скажет, что через VLC.
Я использую это на Linux, но я не сейчас, если он работает на Windows.

с pygame у меня проблема с установкой и я не уверен, насколько хорошо это использовать таким образом:

Можете ли вы предоставить более подробную информацию об ошибке установки Pygame?

Я смог использовать PYGAME с этим кодом, где "hello.mp3" - это файл в том же каталоге

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 только как его установить?

Я также использовал VLC. Я установил его с этими командами:

sudo pip install python-vlc

И я получил эту ошибку:

NameError: no function 'libvlc_new

Итак, я попробовал команду:

sudo apt-get install vlc

И это работает с этим кодом:

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()

Надеюсь, это поможет вам.

Это сделает работу и без необходимости файлов:

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

Вы можете использовать модуль PlaySound

from playsound import playsound
playsound(file.mp3)

Бум это все. Он воспроизводит звук правильно, работает как шарм

Я думаю, что вы ищете:

pyttsx3

Это автономный кроссплатформенный TTS, совместимый с python3 и python2.

Установить:

pip install pyttsx3

Если вам нужен автономный TTS для python, в отличие от gTTS, то, по моему мнению, ваш лучший выбор - pyttsx3.

Если происходит ошибка AVbin...

Сначала загрузите AVbin.exe и установите его, затем перейдите на локальный диск C -> Windows -> System32 -> найдите Avbin.dll и скопируйте этот файл, а затем вставьте этот конкретный файл в корневой каталог.

Ошибка исчезнет

Я не знаю решения всех вопросов, но проблема, с которой вы столкнулись при работе с pydub, заключается в том, что у вас не установлены ffmpeg или avconv. На pydub github есть инструкции:

Окна:

  1. Скачайте и распакуйте libav из бинарных файлов Windows, предоставленных здесь.
  2. Добавьте папку libav /bin в ваш PATH envvar
  3. pip install pydub

Если вы находитесь на окнах, то это должно сделать работу,

import winsound
winsound.PlaySound('your_file.mp3',winsound.SND_FILENAME)

Помните, что этот пакет присутствует только в Python для Windows.

webbrowser должна быть частью вашей стандартной установки Python. Проверьте, есть ли webbrowser.py под C:\Your_Python_Folder\Lib,

Ниже код работает нормально для меня, как webbrowser.py присутствует в вышеупомянутой папке.

import webbrowser
webbrowser.open("rec.mp3")

Установить pyglet используя python -m pip install pyglet

Скачать установленный здесь Ссылка на настройку AVbin (это необходимо)

32/64 бит

import pyglet

song = pyglet.media.load('file.mp3')
song.play()
pyglet.app.run()

Это все.

    import os
    os.system("music.mp3")
Другие вопросы по тегам