Я работаю над созданием виртуального микрофона, который зеркально отображает динамики, в значительной степени петлевого подключения к микрофону.
Мне удалось успешно создать этот микрофон, и когда я смотрю на pavucontrol, он показывает, что микрофон копирует звуковые волны в качестве динамиков. НО когда я подключаю его к скрипту Python, я пробовал все доступные входы, он ничего не читает и не слышит.
Я не уверен на 100%, что правильно настроил этот виртуальный микрофон.
Вот что я сделал.
Я создаю новый виртуальный микрофон:
pactl load-module module-pipe-source source_name=virtual_mic file=/tmp/virtual_mic format=s16le rate=44100 channels=2
Я получаю индекс нового микрофона:
pactl list sources
index: 2
name:
driver:
module: 22
properties:
device.string = "/tmp/virtual_mic"
device.description = "Unix FIFO source /tmp/virtual_mic"
device.icon_name = "audio-input-microphone"
Я получаю индекс моих ораторов
Sink #2
State: IDLE
Name: alsa_output.pci-0000_02_02.0.analog-stereo
Description: ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]) Analog Stereo
Driver: module-alsa-card.c
Я создаю петлю между микрофоном и динамиками
pactl load-module module-loopback source=virtual_mic sink=alsa_output.pci-0000_02_02.0.analog-stereo
Я запускаю этот скрипт Python, чтобы получить все мои исходные коды
import pyaudio
import subprocess
def get_pulseaudio_sources():
result = subprocess.run(['pacmd', 'list-sources'], capture_output=True, text=True)
sources = result.stdout.split('\n')
# Extract source indexes and names
source_info = [line.strip() for line in sources if line.startswith('index') or line.startswith('device.description')]
source_info = [info.split(':')[-1].strip() for info in source_info]
source_indexes = [int(source_info) for i in range(0, len(source_info), 2)]
source_names = [source_info for i in range(1, len(source_info), 2)]
return dict(zip(source_indexes, source_names))
audio = pyaudio.PyAudio()
inputdevice = 0
pulseaudio_sources = get_pulseaudio_sources()
print("\nStarting Audio Devices \n")
# Get all Audio Devices
for i in range(audio.get_device_count()):
device_info = audio.get_device_info_by_index(i)
device_name = device_info['name']
device_index = device_info['index']
print(f"Device {i}: {device_name}" )
print(f" Index: {device_index}")
for pulseaudio_index, pulseaudio_name in pulseaudio_sources.items():
if pulseaudio_name in device_name:
print(f" Matches PulseAudio Source Index: {pulseaudio_index}")
break
print("-----")
Вот что я получаю:
Запуск аудиоустройств
Device 0: Ensoniq AudioPCI: ES1371 DAC1 (hw:0,1)
Index: 0
-----
Device 1: pulse
Index: 1
-----
Device 2: default
Index: 2
-----
Когда я пробую разные индексы в своем коде, он не находит никакого звука (я перепробовал все).
import sounddevice as sd
import numpy as np
from transformers import pipeline
def record_audio_callback(indata, frames, time, status):
if status:
print(status)
# Process the audio data if needed
else:
print("inside record")
try:
# Convert the recorded audio to text
recognizer = pipeline("automatic-speech-recognition", model="openai/whisper-medium")
result = recognizer(np.squeeze(indata))
# Print the entire 'result' for debugging
print("Full result:", result)
# Check if 'transcription' is present in the result
#if 'transcription' in result[0]:
#if result and isinstance(result, list) and result[0].get('transcription'):
if result and isinstance(result, dict) and result.get('text'):
#transcription = result[0]['transcription']
transcription = result['text']
print("Transcription:", transcription)
else:
print ("No valid Transcription found in result")
except Exception as e:
print("Error during transcription: ", e)
# Set the audio parameters
channels = 1 # Mono audio
sample_rate = 44100
input_device = 1
# Start recording
with sd.InputStream(callback=record_audio_callback, channels=channels, samplerate=sample_rate, device=input_device):
print("Inside Live Audio Listen")
try:
sd.sleep(20000) # Record for 10 seconds (adjust as needed)
except KeyboardInterrupt:
print("Keyboard Stopped Recording")
Подробнее здесь: https://stackoverflow.com/questions/779 ... -in-python
PulseAudio Создайте виртуальный микрофон и используйте его в Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я не могу заставить PulseAudio работать. Доступна ли в WSL другая аудиосистема? [закрыто]
Anonymous » » в форуме Linux - 0 Ответы
- 64 Просмотры
-
Последнее сообщение Anonymous
-