Как прервать воспроизведение текста в речь, когда пользователь говоритPython

Программы на Python
Ответить
Anonymous
 Как прервать воспроизведение текста в речь, когда пользователь говорит

Сообщение Anonymous »

Я работаю над проектом голосового помощника на Python. Ассистент слушает ввод пользователя, генерирует ответ, используя языковую модель, а затем произносит ответ с помощью AWS Polly. Я хочу, чтобы помощник немедленно прекратил произносить свой ответ, если пользователь снова начнет говорить, пока помощник все еще говорит.
ВОТ КОД:
def text_to_speech(text):
try:
# Initialize AWS session with credentials
boto_session = boto3.Session(
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
region_name='AWS_REGION' # Adjust region as needed
)

# Create a new Polly client
polly_client = boto_session.client('polly')

# Synthesize speech
response = polly_client.synthesize_speech(
Text=text,
OutputFormat='mp3',
VoiceId='Raveena' # Adjust voice as needed
)

# Save synthesized audio to a temporary file
with tempfile.NamedTemporaryFile(suffix='.mp3', delete=False) as f:
audio_file_path = f.name
f.write(response['AudioStream'].read())

# Initialize pygame mixer
pygame.mixer.init()

# Load and play audio file
pygame.mixer.music.load(audio_file_path)
pygame.mixer.music.play()

# Start listening for interruptions
recognizer = sr.Recognizer()
with sr.Microphone() as source:
recognizer.adjust_for_ambient_noise(source, duration=1)
while pygame.mixer.music.get_busy():
print("Listening for interruption...")
audio = recognizer.listen(source, phrase_time_limit=0.5)
try:
text = recognizer.recognize_google(audio)
if text:
print("Interruption detected!")
pygame.mixer.music.stop()
break
except sr.UnknownValueError:
pass
except sr.RequestError as e:
print(f"Could not request results; {e}")

# Clean up temporary file
os.remove(audio_file_path)
except Exception as ex:
print("Error during text to speech:", ex)


Подробнее здесь: https://stackoverflow.com/questions/785 ... ser-speaks
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»