gpt4 book ai didi

python - 从 PyTTS 音频流编码 mp3

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:21 24 4
gpt4 key购买 nike

我使用 python 2.5 在音频 mp3 文件中进行文本到语音转换。

我使用 pyTSS 作为 python 文本转语音模块,来转换音频 .wav 文件中的文本(在 pyTTS 中不可能直接编码为 mp3 格式)。之后,我使用 lame 命令行编码器以 mp3 格式对这些 wav 文件进行编码。

现在的问题是,我想插入(特别是音频 mp3 文件的两个单词之间的点)特定的外部声音文件(如声音警告)或(如果可能的话,生成的警告声音)。

问题是:

1) 我已经看到 PyTTS 可以将音频流保存在文件或内存流中。使用两个函数:

tts.SpeakToWave(文件, 文本) 或 tts.SpeakToMemory(文本)

利用 tts.SpeakToMemory(text) 函数,并使用 PyMedia 我已经能够直接保存 mp3,但 mp3 文件(复制时),听起来像唐老鸭一样难以理解! :-)这是一段代码:

            params = {'id': acodec.getCodecID('mp3'), 'bitrate': 128000, 'sample_rate': 44100, 'ext': 'mp3', 'channels': 2}

m = tts.SpeakToMemory(p.Text)
soundBytes = m.GetData()

enc = acodec.Encoder(params)

frames = enc.encode(soundBytes)
f = file("test.mp3", 'wb')
for frame in frames:
f.write(frame)
f.close()

我不明白问题出在哪里?!?这种可能性(如果它能正常工作),最好跳过 wav 文件转换步骤。

2)作为第二个问题,我需要将音频 mp3 文件(从文本到语音模块获得)与特定的警告声音连接起来。

显然,如果我能够在将整个音频内存流编码到唯一的 mp3 文件之前,将文本音频内存流(在文本转语音模块之后)和警告声音流连接起来,那就太好了。

我还看到 tksnack 库可以连接音频,但它们无法写入 mp3 文件。

我希望已经说清楚了。 :-)

非常感谢您对我的问题的回答。

朱利奥

最佳答案

我认为 PyTTS 不会生成默认的 PCM 数据(即 44100 Hz、立体声、16 位)。您应该检查如下格式:

memStream = tts.SpeakToMemory("some text")
format = memStream.Format.GetWaveFormatEx()

...并将其正确交给acodec。因此,您可以使用属性 format.Channelsformat.BitsPerSampleformat.SamplesPerSec

关于你的第二个问题,如果声音的格式相同,你应该能够简单地将它们全部传递给 enc.encode,一个接一个。

关于python - 从 PyTTS 音频流编码 mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com