Я пытаюсь транслировать аудио с микрофона, подключенного к моему компьютеру.Я также должен позаботиться о том, чтобы
- , если я воспроизводил аудиофайл, когда что-то говорил в микрофоне, тогда мой код мог бы идентифицировать как звук микрофона, так и звук из файла.играть в фоновом режиме.
(Я попытался сделать это, увеличив количество каналов в моем коде, и даже протестировал количество устройств ввода, но звук из фонового файла не был записан, только мой микрофон был захвачен.)
сохраните его в файле WAV,
, а затем преобразуйте файл WAV в текст.
Мне удалось записать звук с микрофона и преобразовать речь в текст с помощью Google API.Но я сталкиваюсь с проблемой в части фоновой музыки.
Я использовал Обнаружение и запись звука в Python , чтобы сделать часть микрофона.Для захвата звука из фонового файла я случайно проверил количество устройств ввода на моей машине, используя приведенный ниже код </p>
<pre><code>import pyaudio
import wave
p = pyaudio.PyAudio()
info = p.get_host_api_info_by_index(0)
numdevices = info.get('deviceCount')
for i in range(0, numdevices):
if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
print("Input Device id ", i, " - ", p.get_device_info_by_host_api_device_index(0, i).get('name'))
stream=p.open(format=pyaudio.paInt16,
channels=2,
rate=44100,
input=True,
frames_per_buffer=1024,
output_device_index=0)
frames= []
for i in range(0,1000):
data=stream.read(1024)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
wf=wave.open('out.wav','wb')
wf.setnchannels(2)
wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))
wf.setframerate(44100)
wf.writeframes(b''.join(frames))
wf.close()
Вывод был:
Идентификатор устройства ввода 0 - Microsoft Sound Mapper - Вход
Идентификатор устройства ввода 1 - Микрофон гарнитуры (Jabra UC VO
Не удалось записать файлаудио в объекте потока, только мой собственный голос в микрофоне. Кто-нибудь может подсказать, где я ошибаюсь? Или предложить лучший подход к проблеме?