Saturday, March 13, 2021

Script for my VoiceMeeter - OBS - Zoom Sync Video

 



https://www.youtube.com/watch?v=OYuVo4E4CtM&t=0s





 

SPEAKERS

Bruce Quinn

 

Bruce Quinn  00:01

Hi, my name is Bruce Quinn and I consider myself an advanced amateur.

 

Working with Zoom in OBS Studio, I have a nice camera SONY ZV-1, I know the basics of OBS Studio, so I can use a green screen and manipulate it, I can adjust the contrast and saturation and framing of my camera.

 

And I can make recordings in OBS Studio with headshots, with multiple backgrounds or foregrounds right in OBS Studio.

 

However, there's one problem that it started to bother me, which is when I use OBS Studio for my camera, and my video, it creates a delay of 300 to 400 milliseconds on the way to Zoom, which I use frequently for business meetings literally every day.

 

And a client mentioned a few days ago that they noticed a mismatch in the sync between my own voice and my video coming through my multiple component system.

 

So I spent literally a week figuring out different ways to try to make the audio sync between OBS Studio, my camera, my microphone and Zoom. And it turns out, it's very hard to find a solution that works.

 

There's a very sophisticated solution called NDI. But you have to put lots of apps and add ins and virtual cables all over the place.

 

So I wanted to find something simpler.

 

Note:  If you are recording directly within OBS Studio, there is a way to slow down the audio to match the video. You look at the audio box, you use the gear function, you go to Advanced Settings. And there's a setting called SYNC OFFSET, set it to 200, 300, 400 milliseconds, you see what works. But that doesn't help you when you're live on a Zoom call.

 

Finally, I got a single app called VoiceMeeter. That will do what I want. But there were about 50 ways to do it wrong that I stumbled with because they don't have any AV training.

 

And I'm going to show you a way that's fairly simple to understand that that actually works.

 

In this video, I'm going to

 

·        work through the process with graphics, then,

·         I'm going to go back and work through the process again with the live VoiceMeeter program. So you actually watch it like a software demo.

 

 

So with that, let's go to the graphics.

 

So here we are, you've got your camera and your microphone, microphone goes straight into Zoom, that's basically instantaneous. But the camera goes through software processing on my computer called imaging edge for Sony. And then it goes into OBS Studio and there's more image processing and it goes out but it gets to Zoom to three 400 milliseconds late.

 

So here's the problem, there's this 300 millisecond delay, depending on your system going into Zoom.

 

Well, you can't speed that up. But what you can do is slow down the microphone a little bit.

 

And what I developed is a system where I use donationware called VoiceMeeter. And I can insert a three or 400 millisecond delay there, whatever fits best. And then a virtual cable is what Zoom sees. So instead of Zoom connecting direct to your microphone, Zoom thinks that your microphone is this virtual cable coming out of VoiceMeeter.

 

What I would rather be showing you this is the humorous part

 

I wish I could say OBS had a virtual microphone that put out sync’ed sound.

 

OBS Studio has got an output for OBS virtual camera, Zoom sees it that exists, great. There is no output for OBS virtual microphone, it doesn't exist. So that's not an option.

 

I can't show you that. I

 

I'd love to show you software that looks like this.

 



It's the idiots virtual mic app. You pick your mic, Windows real tech mic, you pick a delay, drop down menu for 300 milliseconds, and then Zoom would see this thing called idiots virtual mic app. And that would be your mic, and you'd be done.

 

However, I'm going to show you this software, which is called VoiceMeeter. I'm sure it's really, really good software. But if you don't understand it, it can be very confusing. And you probably don't have anybody that can give you instructions. So you have to figure it out for yourself. So we're going to jump now to the website for VB Audio.

 

https://vb-audio.com/Cable/index.htm

 

 There it is. So this is the home, it's VB audio.com. And you go to the audio apps, you're going to download the simplest virtual cable. It's just a single virtual cable not model multiple ones. So download that and you're going to download VoiceMeeter. They have different kinds of VoiceMeeter that are more sophisticated, you can get the very simplest VoiceMeeter. That's what I use. And remember these are both donationware so they look for a donation for from you.

 

Bruce Quinn  04:56

So now we're looking at voiceMeeter, and also, this pop up menu inside of VoiceMeeter that we're going to use.

 

And I swear to God, I found 50 ways to do this wrong. Either there was no synchronization or there was an echo or there was bad sound. lots of ways to do this wrong.

 

But let's explain VoiceMeeter and this is my Idiot's Guide to VoiceMeeter, you really have four panels here. The first one is hardware input, could be a microphone. The second one is another audio input. For example, it could be music or a laugh track or something, we're not going to use that. The third thing is called voice tech, virtual input, I don't understand it, and we're not going to use that either. Then on the right, you get to the outputs from VoiceMeeter, of which there is a on the left and B on the right, you're going to find we're not going to use B, it'll mess you up. The Ainput has got two different hardware outputs, like you could send it once to your speakers and once to your headphones, for example. But we're just going to use one output, that's a virtual cable.

 

06:13

Finally,

 

 

if you click on this box called A=B, or if you push this button called menu and settings, you get this pop up, which I call number five. And that's where you find a little box called monitoring synchro delay, and you set it for 200, 300, 400milliseconds, whatever works.

 

So let's work through this one step at a time. But pretty quickly.

 

Starting in hardware input. This is a drop down menu, it's going to be your microphone. If you've got a choice for an mme microphone, pick that it's a little bit slower, you want it to be slower. Now this box has become your microphone. Where does it go, it's going to go either to A or B, only check a do not check B. There are a couple other settings here there's a thing called INTELLIPAN. That's voice quality. You don't have to touch it, I tried moving it upwards just a little bit. But don't worry about that. There's a thing called audibility, I don't use it, leave that at zero. And this is your volume output, I would leave it at a neutral setting.

 

Now we're going to panel two, which is another hardware input. The first panel is your microphone, the second panel you're not going to use so don't put anything there, leave a and b to nothing are turned off and set the volume to zero.

 

The next thing is this panel called Virtual Input VB audio VoiceMeeter v AI Oh, you can't change that you can't do anything with it. So you leave that alone, I leave a B off and I set the volume to zero.

 

And believe me some of this stuff is I learned the hard way. If you do it this way. I'm an idiot, but it works.

 

Now we're over to the output panels. The A output panel is called hardware out. And the B panel is called Virtual Out however, you are not going to use the B panel, you're going to go here to the a one button, that's an input to output a.

 

Remember output a one could be your headphone output a two could be your speakers or something like that. So A-1 select to be cable input virtual audio virtual cable, AND --- do not use this thing called VoiceMeeter input. Do not use that use cable input up here.

 

Use the separate independent cable that you installed from the earlier software. The audio here can be neutral or you can raise it a little bit for a little extra volume. That's up to you. Now that you've done that, click on the A B box or use menu slash settings and you'll get this pop up which I've shown on the left. The only thing you need is this thing called monitoring synchro delay, which I've enlarged and you can set it for any number you want 100 200 300 400 500 press return and the a one output which is this virtual cable will be delayed by two or three or 400 milliseconds.

 

So you are now actually done.

 

So this is what everything will look like. Note that the B is unchecked in every column. So this output column B that you do not want to use should be a dead column. Anyway, we've just set the volume to zero for for safety.

 

And this is just a graphic that I'm going to use on my blog that goes along with this and it sort of gives you everything that we did in one somewhat messy graphic.

 


 

 

 

 

 

 

So with that, I'm going to go to a different approach and I'm going to show you this stuff in VoiceMeeter, like a SOFTWARE DEMO, so we are simply going to repeat what you've already seen. But if you're like me, it may stick better the second time.

 

 

We start over here we look at hardware input, it's set to mme microphone real tech. That's a typical windows name for a microphone. And you can actually see my microphone working here, it's monitoring it. I'm not using Zoom, I'm recording an OBS. So nobody is listening to the VoiceMeeter software, but it is recording or listening to my microphone.

 

I've got A button checked (in the first panel), we want to uncheck B, so only A is checked, we'll leave the volume slider at neutral. This little voice quality thing we can slide down or up a little bit, don't have to worry about it audibility, don't worry about it, leave it at zero.

 

 

Now we're coming to the second column in the software hardware input, we don't want a second input, we've got one microphone we're happy. So we select nothing there. We unselect the outputs, and we set the volume at zero.

 

Now we're at the virtual channel. I don't know what that does. But I'm going to set A and B at zero and I'm going to set this volume at zero.

 

 

Now we're at the output. Remember, we're never going to use the B output, the volume is turned down to zero and all of these B's are dead. So there shouldn't be any noise in the B Channel. I

 

In the A channel, A1 OUTPUT, we're going to go to a one and we're going to set it to mme cable input VB audio virtual cable.

 

Remember, as I told you the first time Do not use VoiceMeeter, it won't work use this one cable input.

 

And when you get to Zoom later, you're going to have a thing called cable output virtual cable output. And that's going to be your microphone.

 

 

Now the only thing we have left to do is actually set the delay, which is what we were here for. And I'm going to either click menu and system settings, or I can just click in the A B box here. And the only thing we have to use in this box is the monitoring synchro delay here I've got it set at 200 milliseconds. You do this by trial and error at a couple different settings and see what works to 300 milliseconds. If you have less than 100 milliseconds delay, you probably can't see it for for most amateur purposes. So that was everything.

 

Let me go back to you. So in closing, this will let you use a VoiceMeeter to do nothing but taking your microphone, delay it by a few 100 milliseconds and put it out in an independent virtual cable, which Zoom can see as a microphone input.

 

Other things you may hear about there is a monitoring function in OBS, and there's a delay function in OBS. However, those only work inside of OBS. So if you're streaming inside of OBS, or if you're recording inside of OBS, the OBS audio delay will work for you. It's working for me right now making this recording.

 

But if you use the monitoring, functioning and virtual cables that go outward to Zoom, YES, you can do that to carry the audio signal from OBS to Zoom, BUT IT WILL NOT BE IMPACTED by the audio delay. it skips the audio delay.

 

There is a much more complicated system called NDI. In order to use this, you have to put special apps inside of OBS and set them the right way then you have to download NDI software. Then you need virtual cables to connect OBS to NDI and NDI, to Zoom. So you're doing a lot of different software, multiple steps, 12 or 14 steps, just to slow down your sound, which you can do with what I've demonstrated today.

 

So I'm going to close back on the original slide, which is here. We've taken your camera through OBS to Zoom, we have not done anything with Zoom today, your microphone is going to VoiceMeeter and we have dumbed down VoiceMeeter, so it does nothing except see your microphone on the left and output it on a virtual cable a one on the right. And we've done that pop up box to give a 300 millisecond delay.

 

And that should work for you when you're in Zoom meetings.

 

Now if you've got an informal Zoom meeting, if there are 20 people on the call and you're a little talking head, you probably don't need to worry about the audio delay.

 

But if you're in a one to one job interview, or you're doing something serious and professional in Zoom, then this extra step of going to VoiceMeeter probably could be worthwhile for you.

 

Thank you very much for sticking with me and good luck.


Friday, March 12, 2021

Success! Make VOICEMEETER Insert Audio Delay and Sync OBS with ZOOM

You are an Advanced Amateur.  You use a fancy camera like Sony ZV-1, and you route it through OBS STUDIO on its way to ZOOM.

However, your Mic channel gets to ZOOM 300 ms faster than the video.  EEK!  There is NO CURRENT EASY WAY to slow down the Audio on its way to ZOOM.   (If you were recording INSIDE of OBS, OBS lets you directly set the delay for the audio, but this doesn't work when OBS outputs sound through its Monitor function.  See "Footnote.")

Donationware called VOICEMEETER will accept your Mic signal, add a 200-300-400 ms delay, and then output the audio to ZOOM.   However, I have no computer audiovisual training, and I spent four hours figuring out ways for this to FAIL before I figured out a way to make it WORK.  

____

SOFTWARE REQUIRED:

VB Virtual Cable (Simple, one cable).   https://vb-audio.com/Cable/

VC VoiceMeeter (simple version, not Banana or Potato).  https://vb-audio.com/Voicemeeter/index.htm

_____

Working left to right. Click pic to enlarge for a visual overview.

Watch 15 minute video here.     Watch 3 minute video here.


Click to enlarge

On the first channel, hardware input is MIC.  Use MME MIC if possible as it will be slower, which you want.

Set the output of the First Channel ONLY to "A."  (Round Circle "A").

_____

Set the vertical volume sliders and the round "circle-A, circle-B outputs" of the next two channels to "nothing."

_____

Now, on the HARDWARE OUT little boxes at top right, for A1 select CABLE INPUT (VB Virtual Cable).  Do not use a virtual cable with the name "voicemeeter" in it.  Do not set A2 to anything.

Set the volume of "A" (the left half of the right panel) to either 100% or +5 dB, your preference.

Set the volume of "B" (the right half of the right panel) to 0. (It should be a null channel anyway since the far left mic input is set to "A" output only, and none of the round-circle boxes for B are checked.)

Now, you can get into SYSTEM SETTINGS (either by Menu/System or by clicking in the A/B viewmeter box upper right).  

If you set OUT A1 to a delay, it will be passed forward in the A1 output to Virtual Cable.   Try 100-500 ms.

Finally, in ZOOM, select VIRTUAL CABLE output as your microphone.

____

Footnotes.

If you were working only in OBS, where you are using Recording or Streaming, OBS has an audio delay function.   In the audio boxes, clear gear box.  Click the bottom entry Advanced Audio Properties.  In your MIC channel, set Sync Offset, e.g. 100-500 ms.   Problem is, if you were monitoring this outside OBS, such as from Zoom, that signal would NOT be delayed.

I use a Sony ZV-1 camera, usually with Imaging Edge software.   This, plus OBS, generates a lot of delay like 400 ms.   Two things could reduce my delay.  (1) Reboot computer before your sessions, or (2) use Sony Firmware 2.0 and the USB Streaming Function.  However, USB Streaming Function involves racking and unracking my camera repeatedly, plugging and unplugging it, and fiddling with deep option menus to turn on this function.  And I'd probably have to use half the delay in VoiceMeeter anyway. 

To avoid all the issues above, you can input your camera straight into Zoom and skip OBS if you are in mission-critical functions like a 1:1 face to face job interview, or being the single talking head for a conference presentation, where the sync issue is most deleterious.

If you are in a group meeting in Zoom like 10 people, your sync delay will not be apparent to most people.

I was in a 1:1 meeting selling work to a client last week, and he noticed by OBS-based sync delay, which embarrassed me, and let to this article.

####

I mention that NDI will also let you delay OBS audio to match vido but it is complicated, with many parts and steps.  It places a whole new audiovisual system between OBS and Zoom.  See picture from Yoram Solomon.  This doesn't include plug-ins and settings inside OBS as well, and many virtual cables are involved, rather than one.





Wednesday, March 10, 2021

Synching Sound in OBS Studio Recordings, AND, in ZOOM Meetings

Added Note.

I found out a way to make the SYNCHRO DELAY in VOICEMEETER actually "work."

There are many ways to make this FAIL, this method will WORK.

_____

SOFTWARE REQUIRED:

VB Virtual Cable (Simple, one cable).   https://vb-audio.com/Cable/

VC VoiceMeeter (simple version, not banana or potato).  https://vb-audio.com/Voicemeeter/index.htm

_____

Working left to right.

On the first channel, hardware input is MIC.  Use MME MIC if possible as it will be slower, which you want.

Set the output of the First Channel ONLY to "A."  (Round Circle "A").

_____

Set the volume sliders and the "circle-A, circle-B outputs" of the next two channels to "nothing."

_____

Now, on the HARDWARE OUT little boxes at top right, for A1 select CABLE INPUT (VB Virtual Cable).  Do not use a virtual cable with the name "voicemeeter" in it.  Do not set A2 to anything.

Set the volume of "A" (the left half of the right panel) to either 100% or +5 db, your preference.

Set the volume of "B" (the right half of the right panel) to 0. (It should be a null channel anyway since the far left mic input is set to "A" output only.)

Now, you can get into SYSTEM SETTINGS (either by Menu/System or by clicking in the A/B viewmeter box upper right).  If you set OUT A1 to a delay, it will be passed forward in the A1 output to Virtual Cable.   

Obviously, in ZOOM, select VIRTUAL CABLE output as your microphone.

click to enlarge










I have a somewhat elaborate office video system.  I have a separate Sony ZV-1 camera, with an Elgato Air light behind it.   I run the video (usually) through OBS Studio, which is freeware that gives you a lot of control over multiple windows, text overlays, and use of green screen.  It also includes a recording feature.  There are a zillion videos on YouTube about how to use OBS Studio and place it "between" your camera and Zoom to have more control over color, contrast, framing, windows, etc.

However, because microphone audio input is instantaneous, this video signal system can result in up to a 300 ms delay when recording or using Zoom, which is noticeable to the eye and can be irritating.  There are DIFFERENT ways of fixing this within OBS (for recording Powerpoint talks, for example) and when Zoom is used.

RECORDING ENTIRELY INSIDE OF OBS (PPT TALKS) (NO ZOOM)

The audio sync fix is pretty easy, but like most things in OBS, it's hard to figure out the first time.   

Look at the AUDIO MIXER panel in OBS.   Click the GEAR.  Click ADVANCED AUDIO PROPERTIES.   This lets you set a time delay for the audio, e.g. 200 or 300 ms.   This works only when OBS is (a) live streaming or (b) directly recording within OBS.   However, it's a quick fix.  You can now record your talking head in front of your PowerPoint inside of OBS with finely tuned audio sync.

OK, that took only about 10% of this blog to explain.


GETTING BETTER SOUND SYNC IN ZOOM

This is way trickier.  There are several things that don't work.   For example, with some elaborate settings and extra software, you can use a MONITOR function inside OBS.  However, this will be "blind" to the audio delay setting of 300 ms, so it gets you nowhere as far as Zoom sync is concerned!   (See OBS MONITOR section at bottom).

One thing you want to do first is minimize the delay of the video going into Zoom (assuming you are committed to also using OBS).  

There are three ways to get video from a Sony ZV-1 into Zoom: (1) Sony Imaging Edge software on your PC and ZV-1 set to PC Remote "On."  (2) With Firmware 2.0, set PC Remote to "Off" and set USB Streaming to "On."   (3) Use HDMI output from ZV-1 and a converter like the $130 Elgato Cam Link.  

#1 is the easiest, but the slowest, with the biggest video time lag.   #2 on my system appears to have less video time lag than #1.    #3 may have even less time lag than #2, but it costs $130 and I've never tried it.  Also, #3 looks a little goofy with one camera output cable hanging there for HDMI and another one dangling around for USB charging during your meetings and sessions.

So you are using the USB Streaming function with Firmware 2.0 on the ZV-1, just listed as #2.  #2 is kind of a pain because you have to unplug and replug the USB cable in and out of the ZV-1 every time you start streaming again.

SLOWING DOWN MICROPHONE VIA SOFTWARE

Now, you are going to insert software between the microphone and Zoom to slow down the audio somewhat.   I tried  using Virtual Audio Cables and the Monitor Function in OBS, but it didn't help (link to Yoram Solomon video on this topic here.)   

So I tried software called VoiceMeeter - here.  This is donationware.  

  • Note: When you install VoiceMeeter, you may need to reset the Windows system sound to your normal speakers (lower right Windows panel >  right click > Open Sound Settings > Output Device.  Set it to something normal like "Speakers" instead of to "VoiceMeeter input.")

I don't use VoiceMeeter in connection with OBS in any way, I just use it to connect my MIC to Zoom.  I consider this a simpler method because it involves no settings or submenus in OBS, nor does it involve installing anything into OBS.

Turn on VoiceMeeter (it has to be "on.")   See pic.  Set Hardware Input 1 to Microphone.  I recommend turning the Harware Input 2 and Virtual Input volume controls to "0".  Now, set Hardware Out A1 to Voicemeeter Input.   If you have the option use the MME type of connection because it is rumored to be slower.  In the right box, I turn the left volume control to 0 and the right one to about 90% as shown.


Now, in Zoom, select VOICEMEETER OUTPUT as the microphone.  That should be "it."

OK. Now, what you've got in Zoom, you are getting video via OBS, but OBS is getting video from your camera via FIRMWARE 2.0 USB STREAM, which is faster than Imaging Edge.   

Zoom is getting Audio from your microphone VIA the VoiceMeeter application, which, I think, slows the sound down by 100 or 200 ms.   This will improve sync for either Zoom live meetings or for Zoom-based recordings.   Note that we are not using VoiceMeeter for any material value except to create a bit of slowdown of your audio signal so it lines up with your heavily processed video signal.


Hard Won Tips

OBS has a sound delay parameter, as described above, but it doesn't work when you monitor OBS sound via Virtual Cables.   That's why we have all these other efforts and workarounds.  There should be a simple checkbox in OBS that makes the sound delay setting impact the OBS sound output.

Also, just like OBS, VoiceMeeter has sound delay, under MENU/System Settings/Synchro Delay.  I do not claim to understand all of VoiceMeeter, but, as far as I can tell its Syncrho Delay didn't affect my Zoom video audio sync.  Argh!!!!  I set the A1 and A2 synchro delay at 200 ms, anyway, because it can't hurt, but in tests, it didn't seem to do anything.   In summary, just running sound via VoiceMeeter seems to add 100-200 ms by itself, which is enough to materially help your Zoom sync.

OBS Monitor with Virtual Cable (Educational, but Useless)

OBS has a MONITOR function, which can be accessed either by setting a series of monitoring controls and getting "virtual cables," or by downloading a recently developed app inside of OBS.   However, these are useless for syncing with Zoom because the audio delays inside of OBS don't transfer to the monitoring status.  Learn about the OBS monitor function options (that won't help you) at YouTube here or here.  

I include these because it's part of the OBS and audio learning curve and increases your knowledge as an "advanced amateur" about how things work in general.

NDI - The Killer App for Zoom Sync

Yoram Soloman has another solution, here, which is to insert NDI software between OBS and Zoom.   This is really complicated and a lot of extra software, but it WILL cause your sync to occur and gives you the opportunity to perfect your Zoom sync.  

This guy also Mr Toastmasters also has a patient and clear video about OBS, and hooking it to NDI, here.

VoiceMeeter Alone Happened to Solve My Issue

Since I only need to do ONE THING which is to close the sync gap in Zoom, I haven't tried NDI, I just (A) put my camera in USB Stream mode and I just (B) insert VoiceMeeter between Mic and Zoom.   Together, to my eye, the sync is quite close.

Just Reboot Your Damn PC First, Too

Oh, and you can help yourself by doing a clean reboot of your PC before starting an important Zoom call, so as few things are running as possible when you are using OBS and camera and Zoom.

Tiny Tips on VoiceMeeter

In VoiceMeeter, you can set either the Hardware Input slider or the Output slider to higher than 100% to get a little extra volume from your mic ("gain.")   

VoiceMeeter has a cryptic window called INTELLIPAN where you can play with the orange square and move it around in an audio space.  I didn't find this useful except, possibly, to raise the orange square just a little vertically.



WishList

I wish one of three things would happen.  

Zoom would get a submenu to slow down the audio.  

OBS would get an option to apply the audio delay (which it happily uses for streaming and recording) to the audio output.  (OBS should also just have a dead simple virtual audio output called "OBS Virtual Mic," in my opinion).   

Or, someone could make a tiny software app, much simpler than VoiceMeeter, with only a couple functions, like "select mic input" and "select delay 100 150 200 250 300 350 ms."  Maybe a +5 dB loudness button.  This could become popular donationware for dummies.

This Should Exist