Youtube рдкрд░ рдХреБрдЫ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рди рдореЗрдВ рдзреНрд╡рдирд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди

рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛: рдЬрдм рдпреВрдЯреНрдпреВрдм рдкрд░ рдХреБрдЫ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдзреНрд╡рдирд┐ рдХреЗрд╡рд▓ рдмрд╛рдПрдВ рд╕реНрдкреАрдХрд░ рдкрд░ рдЬрд╛рддреА рд╣реИред рд╣реЗрдбрдлрд╝реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрдирддреЗ рд╕рдордп, рдпрд╣ рдХреБрдЫ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реЙрд▓реНрдпреВрд╢рди рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд▓рд┐рдП рдкреЙрд╡рд░рд╢реЗрд▓ рдФрд░ NAudio рд╕рд╛рдЙрдВрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╕реНрдЯреАрд░рд┐рдпреЛ рдХреЛ рдореЛрдиреЛ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред


  1. рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ
  2. рдореЗрдиреВ рд╕реЗ PowerShell ISE рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
  3. рд▓рд╛рдпрдмреНрд░реЗрд░реА рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдкрде рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ рдмрджрд▓рдирд╛:
    add-type -path 'C:/Users/xxxxx/Downloads/NAudio-Release/NAudio.dll' 
  4. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрдИрдбреА рдпрд╛рдж рд░рдЦреЗрдВ:
     $devices = new-object NAudio.CoreAudioApi.MMDeviceEnumerator $defaultDevice = $devices.GetDefaultAudioEndpoint([NAudio.CoreAudioApi.DataFlow]::Render, [NAudio.CoreAudioApi.Role]::Multimedia) $defaultDeviceId = $defaultDevice.ID -replace '{.+}\.{(.+)}$', '$1' 
  5. рдХрд┐рд╕реА рднреА рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдзреНрд╡рдирд┐ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрджрд▓реЗрдВ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):
    рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖-> рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдзреНрд╡рдирд┐-> рдзреНрд╡рдирд┐-> рдкреНрд▓реЗрдмреИрдХ
  6. рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдИрдбреА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рдХреЛрдб рдЪрд▓рд╛рдПрдБ:
     $waveIn = new-object NAudio.Wave.WasapiLoopbackCapture $waveOut = new-object NAudio.Wave.DirectSoundOut($defaultDeviceId, 100) $waveInProvider = new-object NAudio.Wave.WaveInProvider($waveIn) $waveProvider16 = new-object NAudio.Wave.WaveFloatTo16Provider($waveInProvider) $monoProvider16 = new-object NAudio.Wave.StereoToMonoProvider16($waveProvider16) $monoProvider16.leftVolume = 1 $monoProvider16.rightVolume = 1 $waveOut.init($monoProvider16) $waveOut.play() $waveIn.startRecording() 

    рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╕рднреА рдзреНрд╡рдирд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ:
     $waveIn = new-object NAudio.Wave.WasapiLoopbackCapture 

    рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдзреНрд╡рдирд┐ рдХреЛ рдкрд┐рдЫрд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВ (рд╣реЗрдбрдлрд╝реЛрди рдЕрдкрдиреЗ рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ) рдХреНрд▓рд┐рдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП 100ms рдХреА рджреЗрд░реА рд╕реЗ:
     $waveOut = new-object NAudio.Wave.DirectSoundOut($defaultDeviceId, 100) 

    рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЛрдиреЛ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреАрд░рд┐рдпреЛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ 16 рдмрд┐рдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рднреА рд╣реИред рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
     $waveProvider16 = new-object NAudio.Wave.WaveFloatTo16Provider($waveInProvider) $monoProvider16 = new-object NAudio.Wave.StereoToMonoProvider16($waveProvider16) 

    рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рд╕реЗрдЯ рдХрд░реЗрдВ:
     $monoProvider16.leftVolume = 1 $monoProvider16.rightVolume = 1 

    рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп:
     $waveOut.init($monoProvider16) 

    рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
     $waveOut.play() $waveIn.startRecording() 


  7. рд╣рдо рдпреВрдЯреНрдпреВрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
  8. рдЖрдк рдЗрд╕ рддрд░рд╣ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ:
     $waveIn.stopRecording() $waveOut.stop() 
  9. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВред

рд╡рд┐рдзрд┐ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ: рдПрдХ рджреВрд╕рд░реЗ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдкреБрдирд░реНрд╕рдВрд░рдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
PS рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛: рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рд╣реЗрдбрдлреЛрди рдЬреИрдХ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ред


Source: https://habr.com/ru/post/In201870/


All Articles