python - Python3 中的 VLC 在播放音频时会剪掉音频的开头和结尾部分。如何解决?

标签 python audio speech-recognition text-to-speech vlc

我有以下将文本转换为语音的功能:

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/

相关文章:

python - MQTT (Mosquitto) over TLS - 某些程序中的证书错误

Python:如何制作标准大小为 6 的 struct.calcsize 整数?

HTML5 音频标签播放,但控件未按预期工作

ios - xcode-阻止音频文件相互播放

python - 带有自定义用户模型的 django-allauth 不起作用

python - 将字符串中的键分配给字典

java - 如何为所有语言设置 RecognizerIntent

android - Android 中的声音管理语音识别/TTS

php - * 无法打开 vchiq 实例

nlp - 构建类似 Jarvis 的本地语言应用程序