При одновременной работе pytorch и sounddevice ничего не происходит но при убирании последнего программа начинает работать в чём проблема?

я делаю голосового ассистента на python и появилась такая проблема что при включении sounddevice программа не работает при этом если библиотеку убрать то работа кода возобновляется. код прикладываю. версия питона 3,9.

import torch
import sounddevice as sd
import time

language = 'ru'
model_id = 'v3_1_ru' # другая версия русского
sample_rate = 48000
speaker = 'baya'
put_accent = True
put_yo = True


device = torch.device('cpu')

model, example_text = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                     model='silero_tts',
                                     language=language,
                                     speaker=model_id,
                                     trust_repo=True) # <- доверяем репозиторию

model.to(device)  # gpu or cpu

def speak(what):
    audio = model.apply_tts(text=what+"..",
                            speaker=speaker,
                            sample_rate=sample_rate,
                            put_accent=put_accent,
                            put_yo=put_yo)
    sd.play(audio, sample_rate)
    time.sleep(len(audio) / sample_rate)
    sd.stop
speak('Привет')

Ответы (1 шт):

Автор решения: Yarok

проблема заключалась в конфликте torchaudio и sounddevice.

я просто перенёс импорт последнего непосредственно перед его использованием.

import torch
import time

language = 'ru'
model_id = 'v3_1_ru' # другая версия русского
sample_rate = 48000
speaker = 'baya'
put_accent = True
put_yo = True


device = torch.device('cpu')

model, example_text = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                     model='silero_tts',
                                     language=language,
                                     speaker=model_id,
                                     trust_repo=True) # <- доверяем репозиторию

model.to(device)  # gpu or cpu

def say(text):
    audio = model.apply_tts(text=text,
                            speaker=speaker,
                            sample_rate=sample_rate,
                            put_accent=put_accent,
                            put_yo=put_yo)
    import sounddevice as sd
    sd.play(audio, sample_rate)
    time.sleep((len(audio) / sample_rate)+1.2)
    sd.stop()
→ Ссылка