1

Тема: sounddevice поток з discord voice channel

import sounddevice as sd
import queue

device = sd.default.device
samplerate = int(sd.query_devices(device[0], 'input')['default_samplerate'])  #get mic hz
q = queue.Queue()
q.put(bytes(indata)) 
voice recorder:
data = q.get()

Отже, програмне забезпечення орендує аудіо з мікрофона, як зробити аудіозапис, щоб налаштувати q.put джерело аудіопотоку з голосового каналу Discord?
Дякую:)

2

Re: sounddevice поток з discord voice channel

GPT-4 написав:

Для запису аудіо з мікрофона у Discord, вам потрібно використовувати Discord API. Ви можете використати бібліотеку discord.py для реалізації цього. Нижче наведено приклад коду, який записує аудіо з голосового каналу Discord і зберігає його у файлі:

import discord
from discord.ext import commands
import sounddevice as sd
import numpy as np
import queue

TOKEN = 'your_bot_token_here'
bot = commands.Bot(command_prefix='!')

device = sd.default.device
samplerate = int(sd.query_devices(device[0], 'input')['default_samplerate'])  # get mic hz
q = queue.Queue()

@bot.command()
async def join(ctx):
    channel = ctx.author.voice.channel
    if channel:
        await channel.connect()

@bot.command()
async def leave(ctx):
    await ctx.voice_client.disconnect()

@bot.event
async def on_ready():
    print(f'{bot.user} has connected to Discord!')

def audio_callback(indata, frames, time, status):
    q.put(indata.copy())

with sd.InputStream(callback=audio_callback, channels=1, samplerate=samplerate):
    bot.run(TOKEN)

запис після введення команди:

@bot.command()
async def record(ctx):
    global is_recording
    is_recording = True
    await ctx.send('Розпочинаю запис...')

@bot.command()
async def stop(ctx):
    global is_recording
    is_recording = False
    await ctx.send('Зупиняю запис...')

    audio_data = []

    while not q.empty():
        audio_chunk = q.get()
        audio_data.append(audio_chunk)

    audio_data = np.concatenate(audio_data, axis=0)
    np.savetxt('audio_record.txt', audio_data)
    await ctx.send('Запис збережено у файлі audio_record.txt')

замінити 'your_bot_token_here' на токен вашого бота