[opus] Stereo channel separation

O'Connor, Kevin Kevin.OConnor at inin.com
Mon Apr 7 11:45:09 PDT 2014


>On 11/20/2013 03:37 PM, O'Connor, Kevin wrote:
>> I have an application I intend to use Opus for that involves creating
>> recordings of two-party conversations where each party is saved as a
>> separate channel. Audio may be later processed or analyzed on a
>> per-party basis so if audio in one channel affects the other channel, it
>> could create problems. My question is, if I use a single stereo Opus
>> stream, how well will channel separation be maintained? Are there any
>> other disadvantages to doing it this way?
>
>If you encode as stereo, you should still have perfect channel
>separation. However, the encoding will likely be less efficient than
>having two separate streams. How much is not clear -- you'll have to
>experiment.

I've run a couple quick tests with opus-tools 0.1.8 and it doesn't sound like the two channels
are getting perfect channel separation. You can hear a faint version of the opposite channel
after encoding to opus and then decoding.

I have a couple of sample .wav files I can supply (before and after opus encoding/decoding) that
show the affect. I can attach or upload them somewhere if someone wants to take a look, but it's
pretty easy to see if you have a recording where one channel  is silent for a few seconds.

I'm encoding an 8kHz, linear, 16bit wave file that contains two channels (both with speech),
using opusenc and opusdec with default settings. Opusinfo gives the following output for the
encoded opus file:

    New logical stream (#1, serial: 00003419): type opus
    Encoded with libopus 1.1
    User comments section follows...
            ENCODER=opusenc from opus-tools 0.1.8
    Opus stream 1:
            Pre-skip: 312
            Playback gain: 0 dB
            Channels: 2
            Original sample rate: 8000Hz
            Packet duration:   20.0ms (max),   20.0ms (avg),   20.0ms (min)
            Page duration:   1000.0ms (max),  989.6ms (avg),  480.0ms (min)
            Total data length: 247227 bytes (overhead: 1.89%)
            Playback length: 0m:49.471s
            Average bitrate: 39.98 kb/s, w/o overhead: 39.22 kb/s
    Logical stream 1 ended

Is this bleedover expected? I found an older copy of opus-tools (0.1.6, libopus 1.0.2) and it does not appear to
have the bleedover between channels, so I think this was introduced in 1.0.3 or 1.1.

Kevin O'Connor
Interactive Intelligence, Inc.


More information about the opus mailing list