LINUX.ORG.RU

Искусственный интеллект

 


0

1

Если на машине стоит дополнительный нейропроцессор, как его использовать для управления ПК? Если пользователь владее только bash и чуть-чуть Pyton?

Хотелось бы иметь возможность управлять ОС посредством голосовых команд, обрабатываемых ИИ.

Может кто-то помочь разобраться в этом вопросе?

Дам небольшой пример куда копать, т.к. создавать весь пайплайн лень, или разберетесь или нет:

#!/usr/bin/env python3
import torch
from io import BufferIO
import speech_recognition as sr  # <- https://github.com/Uberi/speech_recognition
from transformers import WhisperForConditionalGeneration, WhisperProcessor, pipeline

model_id = "antony66/whisper-large-v3-russian"
temp_file = "microphone-results.raw"
device = torch.device('cuda')
whisper = WhisperForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, use_safetensors=True)
processor = WhisperProcessor.from_pretrained(model_id)

asr_pipeline = pipeline(
    "automatic-speech-recognition",
    model=whisper,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=256,
    chunk_length_s=30,
    batch_size=16,
    return_timestamps=True,
    torch_dtype=torch.bfloat16,
    device=device,
)

r = sr.Recognizer()
with sr.Microphone() as source:
    print("Говорите")
    audio = r.listen(source)

with open(temp_file, "wb") as f:
    f.write(audio.get_raw_data())

wav = BytesIO()
with open(temp_file, "rb") as f:
    wav.write(f.read())
wav.seek(0)

asr = asr_pipeline(wav, generate_kwargs={"language": "russian", "max_new_tokens": 256}, return_timestamps=False)

# распознанный текст из речи, дальше его парсите, находите названия команд и выполняете их.
print(asr['text'])
Obezyan
()
Ответ на: комментарий от Cl_Magenta

Ну.. дальше захочется, что бы внедрялись неологизмы, т.к. вербвльно поколения говорящие на одном языке не всегда понимают друг-друга)

Удачи короче в пустопорожнем проекте. Хотя, если платят звонкие шекели.. Руби очень хорош для бизнес стартапов )))

anonymous
()
Ответ на: комментарий от Cl_Magenta

А необходимо, чтобы он ее интерпретировал, то есть ориентировался на контекст.

Читайте комментарий в предпоследней строке кода. Распознавание речи интерпретация текста это две разные задачи. Сначала сделайте одну потом приступайте ко второй, она легче.

Obezyan
()
Ответ на: комментарий от Cl_Magenta

Думал, что наоборот, – вторая сложнее.

А это смотря какого рода интерпретация нужна. Если выполнять фиксированный набор команд — то можно руками написать алгоритм, анализирующий текст. Допустим, мы хотим обрабатывать команду «выключи свет». Сначала находим в тексте ключевое слово «свет» — если его нет, это какая-то другая команда. Дальше, если в тексте есть «выключи», «выключить», «погаси» и т.п., и одновременно с этим нет «включи» и т.п., то это можно воспринять как команду выключения света. А если есть конфликтующие термины, то ответить юзеру «не понимаю, перефразируй».

А вот если надо обработать команду типа «посоветуй музыку вроде Behemoth, но с женским вокалом», тут уже надо отправить запрос через интернет в какую-нибудь LLM и озвучить его юзеру. Если обходиться локальной моделью, то сложность вопросов, на которые она сможет отвечать, будет сильно ограничена.

annulen ★★★★★
()
Ответ на: комментарий от Cl_Magenta

Надо искать, какие есть модели, что они умеют, дальше изучать API подходящей. Принцип будет тот же, что и с whisper выше, только на входе текст, а не wav

annulen ★★★★★
()

Может помочь форум энтузиастов открытых умных колонок.

Как, и как сделать, чтобы он потом вернул речь в код? Может статьи есть по этому вопросу?

Есть статьи по NLP Pyton.

mydibyje ★★★★
()
Ответ на: комментарий от Cl_Magenta

Есть примеры?

Переводите распознанный текст в нижний регистр и ищите в тексте слово «команда» до первого совпадения. Отбрасываете все что раньше в тексте. Оставшийся текст разбиваете в массив по пробелам и удаляете все элементы состоящие из 3х букв и короче. После чего проверяете до первого совпадения в цикле каждый элемент (слово), есть ли оно в списке действий (например, actions = [‘свет’, ‘громкость’]). Нашли, например - свет. Вызываете функцию lightAction и передаете оставшийся массив без элемента ‘свет’. В нем ищете вариант действия, сравнивая каждое слово с массивом разрешенных вариантов этого действия до первого совпадения (variants = [‘включить’, ‘выключить’]). Нашли, например, ‘включить’ - вызываете light.on() внутри lightAction.

Этот позволит использовать простые команды говоря:

  • Команда: включить свет
  • Команда: уменьшить громкость

итд.

Obezyan
()

А зачем голосовому управлению ИИ? Даже моя старая nokia 6600 в далёком 2004 году умела вызывать по заданной голосовой команде нужное приложение или действие. И это без интернета! Винда умеет вроде, линух возможно тоже, но я не пробовал

karton1 ★★★★★
()
Ответ на: комментарий от karton1

За тем, чтобы с этого начать и, далее, развить этот метод. В идеале программа должна сравнивать векторы фраз, то есть определять, на скольпо фраза схожа с шаблоном.

ИИ по этому поводу пишет:

python
from sentence_transformers import SentenceTransformer, util

# Загрузка предобученной модели
model = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')

# Список фраз
phrases = ["врубай сеть", "включи вайфай", "включи сеть", "выключи вайфай"]
query = "включить вайфай"

# Преобразование фраз в векторы
phrase_embeddings = model.encode(phrases)
query_embedding = model.encode(query)

# Вычисление сходства (косинусное сходство)
cosine_scores = util.pytorch_cos_sim(query_embedding, phrase_embeddings)

# Вывод результатов
for i in range(len(phrases)):
    print(f"Сходство с '{phrases[i]}': {cosine_scores[0][i]:.4f}")
Cl_Magenta
() автор топика
Ответ на: комментарий от Cl_Magenta

В идеале – ты говоришь «скачай Шекспира», и программа качает pdf, epub Шекспира. Печатать устал уже ) Да и классические поисковики уже, – думаю можно сказать это, – морально устарели )

Cl_Magenta
() автор топика
Последнее исправление: Cl_Magenta (всего исправлений: 2)

Если на машине стоит дополнительный нейропроцессор, как его использовать для управления ПК? 

Вежливо попроси. Потом добавь «А нето...» И возьмись за вилку шнура питания.

slackwarrior ★★★★★
()
Ответ на: комментарий от Cl_Magenta

Берёшь и пишешь. Тебе пример кода на питоне? А алгоритм придумать это твоя задача, у меня с ходу в голове штук 5 возникло, но они все под разные ТЗ, а твоего ТЗ тут нет.

anonymous
()
Ответ на: комментарий от Cl_Magenta

Да и классические поисковики уже, – думаю можно сказать это, – морально устарели )

Это пока нейроидиоты тебя бредом своего манямирка не накормили и ты не сел в лужу, полную метана вместо матана

slackwarrior ★★★★★
()