Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Мне нужно написать голосового помощника на пайтон с использованием Elevenlabs

Luke Art Ученик (53), на голосовании 3 недели назад
мне нужно типа я говорю слово какое-то и срабатывали строчки кода где генерируется аудио с помощью Elevenlabs и это проигрывалось и я это сделал можете посмотреть правильно ли я сделал код:

 import speech_recognition as sr 
from elevenlabs.client import ElevenLabs
from elevenlabs import stream


r = sr.Recognizer()
client = ElevenLabs(
api_key="тут апи"
)


def listen():
with sr.Microphone() as source:
print('я вас слушаю сэр')
r.adjust_for_ambient_noise(source)

audio = r.listen(source)
try:
text = r.recognize_google(audio, language='ru-RU').lower()
except sr.UnknownValueError:
pass
print(f'вы сказали: {text}')
return text


def text_stream(text):
if text == 'джарвис':
yield "Hi there, I'm Eleven "
yield "I'm a text to speech API "
audio_stream = client.generate(
text=text_stream(text),
voice="Nicole",
model="eleven_monolingual_v1",
stream=True
)

stream(audio_stream)


listen()
Голосование за лучший ответ
Chudo_Chudnoe Мастер (2054) 1 месяц назад
Если не в даваться в подробности, то всё очень даже неплохо. Но я поправил несколько моментов, если бы делал для себя)

 import speech_recognition as sr  
from elevenlabs.client import ElevenLabs
import pyaudio

r = sr.Recognizer()
client = ElevenLabs(
api_key="тут апи"
)

p = pyaudio.PyAudio()

def listen():
with sr.Microphone() as source:
print('я вас слушаю сэр')
r.adjust_for_ambient_noise(source)
audio = r.listen(source)
try:
text = r.recognize_google(audio, language='ru-RU').lower()
print(f'Вы сказали: {text}')
return text
except sr.UnknownValueError:
print("Не удалось распознать речь")
return None

def play_audio_stream(stream):
for audio_chunk in stream:
stream = p.open(format=p.get_format_from_width(2),
channels=1,
rate=24000,
output=True)
stream.write(audio_chunk)
stream.stop_stream()
stream.close()

def text_stream(text):
if 'джарвис' in text:
text = "Привет, я Eleven, текст в речь API."
audio_stream = client.generate(
text=text,
voice="Nicole",
model="eleven_monolingual_v1",
stream=True
)
play_audio_stream(audio_stream)

text = listen()
if text:
text_stream(text)



Я добавил библиотеку pyaudio для воспроизведения аудио.


Теперь функция listen возвращает None, если речь не распознана.


Функция play_audio_stream создаёт и управляет аудио потоком для воспроизведения ?‍?
Luke ArtУченик (53) 1 месяц назад
получилось, только когда я говорю джарвис то какие-то помехи идут
там еще в коде ошибка
Local variable 'query' value is not used :40
Local variable 'query' value is not used :19
Parameter 'query' value is not used :38
Luke ArtУченик (53) 1 месяц назад
а как будет если вписать так
код:
https://telegra.ph/Esli-kod-budet-vyglyadet-tak-04-19
Chudo_ChudnoeМастер (2054) 1 месяц назад
Ошибка:
 Local variable 'query' value is not used  :40 
Local variable 'query' value is not used :19
Parameter 'query' value is not used :38
получается, если переменная объявлена, но не используется в коде.
Если переменная query не нужна, её можно убрать.

Проблемы с воспроизведением могут быть по разным причинам. Плохой микрофон или неправильные параметры обработки аудио.

Ещё play(audio), она вызывается, но не определена.

Попробуй этот:


 следующий комментарий 
Chudo_ChudnoeМастер (2054) 1 месяц назад
import speech_recognition as sr
from elevenlabs.client import ElevenLabs
from playsound import playsound # Используем для воспроизведения звука

# Настройка клиента ElevenLabs
api_key = "тут апи"
client = ElevenLabs(api_key=api_key)

# Функция для прослушивания и распознавания речи
def listen():
r = sr.Recognizer()
with sr.Microphone() as source:
print('Я вас слушаю, сэр.')
r.adjust_for_ambient_noise(source)
audio = r.listen(source)

try:
text = r.recognize_google(audio, language='ru-RU').lower()
print(f'Вы сказали: {text}')
return text
except sr.UnknownValueError:
print("Не удалось распознать речь.")
return None
Chudo_ChudnoeМастер (2054) 1 месяц назад
Вот этот:

 import speech_recognition as sr 
from elevenlabs.client import ElevenLabs
from playsound import playsound # Используем для воспроизведения звука

# Настройка клиента ElevenLabs
api_key = "тут апи"
client = ElevenLabs(api_key=api_key)

# Функция для прослушивания и распознавания речи
def listen():
r = sr.Recognizer()
with sr.Microphone() as source:
print('Я вас слушаю, сэр.')
r.adjust_for_ambient_noise(source)
audio = r.listen(source)

try:
text = r.recognize_google(audio, language='ru-RU').lower()
print(f'Вы сказали: {text}')
return text
except sr.UnknownValueError:
print("Не удалось распознать речь.")
return None

Chudo_ChudnoeМастер (2054) 1 месяц назад
 # Функция для обработки текста и воспроизведения звука  
def text_stream(text):
if text == 'джарвис':
# Генерация голоса и воспроизведение аудио
voice = client.create_voice(name="Alex")
audio_path = client.generate(text="Привет! Я клонированный голос!", voice=voice)
playsound(audio_path)

# Основной цикл
if __name__ == "__main__":
while True:
command = listen()
if command:
text_stream(command)
Chudo_ChudnoeМастер (2054) 1 месяц назад
Тут я использовал playsound для воспроизведения аудио.
Убрал неиспользуемые переменные query.
Добавил защиту от ошибок в listen() , если речь не распознана.
Прикрутил бесконечный цикл для непрерывного прослушивания команд
Похожие вопросы