- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 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.Channels
、format.BitsPerSample
和 format.SamplesPerSec
。
关于你的第二个问题,如果声音的格式相同,你应该能够简单地将它们全部传递给 enc.encode
,一个接一个。
关于python - 从 PyTTS 音频流编码 mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199151/
我使用 python 2.5 在音频 mp3 文件中进行文本到语音转换。 我使用 pyTSS 作为 python 文本转语音模块,来转换音频 .wav 文件中的文本(在 pyTTS 中不可能直接编码为
在使用 SAPI5 进行文本转语音时是否可以扩大口语之间的差距? 问题是esp。有些语音,单词几乎是连在一起的,这使得演讲更难理解。 我正在使用 python 和 pyTTS 模块(在 Windows
我在 python 中使用 TTS。 (pyttsx 库)。我在文档中读到我可以获得属性速率、语音、语音、音量。在文档中仅涉及我只能设置速率、语音、音量的属性。这意味着我无法设置“声音”属性?我对声音
我是一名优秀的程序员,十分优秀!