ALSA Виртуальный микрофон для VoIP - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать виртуальный микрофон для Voice Over IP, который позволяет изменять звук перед его отправкой.

Я нахожусь на Ubuntu 16.04 с python 3.5

Чтобы уточнить:Я хочу иметь возможность получать звук со своего микрофона (реального микрофона). Изменить звук. Отправить его в «виртуальный микрофон». Выбрать виртуальный микрофон в Skype (или другом приложении VoIP). Человек, которому я звоню, получает измененный звук * 1005.*

Что мне нужно далеко: я включил snd-aloop sudo modprobe snd-aloop - что дает мне 2 петлевых устройства.

У меня есть сценарий Python, использующий alsaaudio:

import alsaaudio, time, audioop

FRAME_SIZE = 48

def get_audio():
   inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK,device='plughw:CARD=UB1,DEV=0') #actual mic

   # Set attributes: Mono, 8000 Hz, 16 bit little endian samples
   inp.setchannels(1)
   inp.setrate(FRAME_SIZE*1000)
   inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
   inp.setperiodsize(160)
   loopback_mic(inp)

def loopback_mic(inp):
   middleman = alsaaudio.PCM(alsaaudio.PCM_PLAYBACK, alsaaudio.PCM_NONBLOCK, device='hw:0,0,1')  # fake mic playback
   middleman.setchannels(2)
   fakemic = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK, device='hw:0,1,1')  # fake mic 'output'
   fakemic.setchannels(2)
   while True:
       l, data = inp.read()
       if l%FRAME_SIZE==0:
           middleman.write(data)
           l1, data1 = fakemic.read()
       time.sleep(.001)

, однако, когда я запускаю Skype, в качестве микрофона выбираю «Loopback Analog Stereo» и затем запускаю свой сценарий - другой человек не слышитчто-нибудь

мои соответствующие устройства:

**** List of CAPTURE Hardware Devices ****  
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]  
  Subdevices: 7/8  
  Subdevice #0: subdevice #0  
  Subdevice #1: subdevice #1  
  Subdevice #2: subdevice #2  
  Subdevice #3: subdevice #3  
  Subdevice #4: subdevice #4  
  Subdevice #5: subdevice #5  
  Subdevice #6: subdevice #6   
  Subdevice #7: subdevice #7    
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]    
  Subdevices: 8/8    
  Subdevice #0: subdevice #0    
  Subdevice #1: subdevice #1    
  Subdevice #2: subdevice #2    
  Subdevice #3: subdevice #3    
  Subdevice #4: subdevice #4    
  Subdevice #5: subdevice #5    
  Subdevice #6: subdevice #6   
  Subdevice #7: subdevice #7  
card 1: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]  
  Subdevices: 1/1  
  Subdevice #0: subdevice #0  
card 1: PCH [HDA Intel PCH], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]  
  Subdevices: 1/1  
  Subdevice #0: subdevice #0  
card 3: UB1 [Samson UB1], device 0: USB Audio [USB Audio]  
  Subdevices: 0/1  
  Subdevice #0: subdevice #0  

**** List of PLAYBACK Hardware Devices ****  
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]  
  Subdevices: 7/8  
  Subdevice #0: subdevice #0  
  Subdevice #1: subdevice #1  
  Subdevice #2: subdevice #2  
  Subdevice #3: subdevice #3  
  Subdevice #4: subdevice #4  
  Subdevice #5: subdevice #5  
  Subdevice #6: subdevice #6  
  Subdevice #7: subdevice #7  
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]  
  Subdevices: 8/8  
  Subdevice #0: subdevice #0  
  Subdevice #1: subdevice #1  
  Subdevice #2: subdevice #2  
  Subdevice #3: subdevice #3  
  Subdevice #4: subdevice #4  
  Subdevice #5: subdevice #5  
  Subdevice #6: subdevice #6  
  Subdevice #7: subdevice #7  
card 1: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]  
  Subdevices: 1/1   
  Subdevice #0: subdevice #0  
...
...