Почему бот Discord, созданный для улавливания голосов людей, не работает должным образом?Python

Программы на Python
Ответить
Anonymous
 Почему бот Discord, созданный для улавливания голосов людей, не работает должным образом?

Сообщение Anonymous »

Раньше я делал бота для разногласий, который получал то, что люди говорят в VC, и если они сказали ключевое слово, их перевели на другой канал, мой код работает только тогда, когда я говорю, и другие люди не обнаруживаются. р>

Код: Выделить всё

import sys
import discord
from discord.ext import commands
import vosk
import asyncio
import json
import pyaudio
import threading
from discord import FFmpegPCMAudio, PCMVolumeTransformer

TOKEN = 'token' #changeit
MODEL_PATH = 'c:\\model'
DESTINATION_CHANNEL_ID = channelid #changeit
intents = discord.Intents.default()
intents.messages = True
intents.voice_states = True
bot = commands.Bot(command_prefix='!', intents=intents)
model = vosk.Model(MODEL_PATH)
audio_queue = asyncio.Queue()
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=16000,
input=True,
frames_per_buffer=8000)

def read_audio():
while True:
data = stream.read(8000)
audio_queue.put_nowait(data)
audio_thread = threading.Thread(target=read_audio)
audio_thread.start()
async def process_audio(vc):
rec = vosk.KaldiRecognizer(model, 16000)
while vc.is_connected():
data = await audio_queue.get()
if rec.AcceptWaveform(data):
result = json.loads(rec.Result())
print(f"Detected speech: {result['text']}")
if 'keyword' in result['text']:
destination_channel = bot.get_channel(DESTINATION_CHANNEL_ID)
for member in vc.channel.members:
if member != bot.user:
await member.move_to(destination_channel, reason='Moved for saying restricted phrase')
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
@bot.event
async def on_voice_state_update(member, before, after):
if after.channel is not None and bot.user not in after.channel.members:
vc = await after.channel.connect()
asyncio.create_task(process_audio(vc))
bot.run(TOKEN)
Я пробовал много чего, использовал разные библиотеки и т. д., но ничего не работало. Я читал на многих веб-сайтах, что это сработает, но это не сработало. Я пробовал использовать аудиофункции в библиотеке Discord, но это тоже не сработало. Ffmpeg работал лучше всего, но он работал только тогда, когда я говорил, а когда говорили другие, он не работал. Я даже сделал консольную строку ввода, где я могу видеть, какое слово было сказано, и в ней записаны только те слова, которые я сказал.

Подробнее здесь: https://stackoverflow.com/questions/793 ... king-prope
Ответить

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

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

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

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

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