我有以下将文本转换为语音的功能:
from gtts import gTTS
import vlc, time
def say(text, language = 'en'):
speech = gTTS(text = text, lang = language, slow = False)
mp3_file = 'text.mp3'
speech.save(mp3_file)
p = vlc.MediaPlayer(mp3_file)
p.play()
但是当我给它一些文本以将其转换为音频并播放时,它可以很好地将文本转换为音频,但在播放时它会剪掉开头和结尾。在下面的例子中:
say('Hello and Welcome to this session!')
它只播放/发音“欢迎来到”部分。我知道文本正在转换为音频,因为当我双击生成的 mp3 文件 text.mp3
时,它播放得很好,从头到尾都没有在两个 Groove 中进行任何剪裁音乐播放器和 Windows Media Player。
我找到了 this问题在哪里遇到同样的问题;我听从了建议,并在函数之前和之后都包含了一个 time.sleep(2)
,以防万一,函数中的 p.play()
:
time.sleep(2)
p.play()
time.sleep(2)
但结果是一样的,它剪辑掉了音频文件的开始和结束部分。我该如何解决?
编辑: 我在上面提到生成的 mp3 文件 text.mp3
在 Groove Music Player 和 Windows Media 中从头到尾播放都很好,没有任何剪裁球员。但是,当我用VLC Media Player手动打开文件时,我发现它也剪掉了开头和结尾的一些部分!在 VLC Media Player 中手动打开文件时被剪掉的部分比在 Python 中使用 vlc
库播放文件时(即使用 p.play()
在上面的函数中)。例如,在上面的示例文本中,当我右键单击 text.mp3
文件并使用 VLC Media Player 打开时,我可以听到“lo and welcome to”。所以我猜 VLC 本身有问题。那么,是否有其他一些 Python 库可用于完美播放音频?
最佳答案
我找到了另一个名为 playsound
的库,它可以在没有任何剪辑的情况下播放音频文件:
from gtts import gTTS
from playsound import playsound
def say(text, language = 'en'):
speech = gTTS(text = text, lang = language, slow = False)
mp3_file = 'text.mp3'
speech.save(mp3_file)
playsound(mp3_file)
我认为这是比 VLC 更好的解决方案,即使 VLC 中没有音频剪辑,因为使用 vlc
库需要您在计算机上安装 VLC 媒体播放器,而这playsound
库不需要您安装任何其他东西就可以工作。将它留在这里供后代使用,以防遇到此问题的其他人遇到此线程。
关于python - Python3 中的 VLC 在播放音频时会剪掉音频的开头和结尾部分。如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146915/