gpt4 book ai didi

audio - 直接从python程序播放音频(文本到语音)

转载 作者:行者123 更新时间:2023-12-02 23:03:54 26 4
gpt4 key购买 nike

我试图弄清楚如何从python程序播放音频,而无需将音频保存到我的计算机。声音是在python程序中创建的,只需要在播放后立即停止播放即可。

我已经尝试使用pygame,playsound,子进程,gTTS和其他各种工具,但都没有成功。

gTTS“有效”,但仅保存音频而不播放

我也在使用python 3(我于6/18/18更新)

PyAudio的尝试对我不起作用。但是这是我的代码:

import subprocess 
from gtts import gTTS
if choose in card.keys():
tts = gTTS(text = choose, lang = 'en')
tts.save(audio_eng)
checker(guess, choose, card, pract_one, good_count, bad_count, pract_two)
return_code = subprocess.call(["afplay", audio_eng])#, shell= True)

最佳答案

我认为用于这种事情的主要库是PyAudio。它建立在portaudio(一个C库)的顶层,我已经使用了很多次。

如果您使用Python生成了音频,则只需将其传递到输出即可,类似于PyAudio文档(Blocking mode Audio I/O)上的示例。这将停止发生其他过程,直到音频文件完成播放为止。

"""PyAudio Example: Play a wave file."""

import pyaudio
import wave
import sys

CHUNK = 1024


# wf = wave.open(sys.argv[1], 'rb') # Original example
wf = your_audio_data_array

# instantiate PyAudio (1)
p = pyaudio.PyAudio()

# open stream (2)
stream = p.open(format=p.get_format_from_width(your_audio_data_samplewidth),
channels=your_audio_data_nChannels,
rate=your_audio_data_framerate,
output=True)

# read data
data = wf # your_audio_data_array

# play stream (3)
while len(data) > 0:
stream.write(data)
# data = wf.readframes(CHUNK) # read more data if you want to stream another buffer

# stop stream (4)
stream.stop_stream()
stream.close()

# close PyAudio (5)
p.terminate()

我已经修改了这个示例,以解释您的问题所在。因此,您只需将音频数据缓冲区(您说您已经在Python中生成)传递给PyAudio。

要一次执行多个进程,请参阅 PyAudio中的 their documentation回调模式I / O。

关于audio - 直接从python程序播放音频(文本到语音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091577/

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