Olypus voice recorder - codec?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Olypus voice recorder - codec?

Dan Stromberg

Hi folks.

This message does get into driver specifics to an extent, but I'm mostly
coming to list for advice on how to find what "mystery codec" is being
used.

I've been putting some of the tiny bit of actual freetime I get during
this winter holiday :), into trying to get a libusb-based driver going
for my little Olympus VN480PC.  It's a digital voice recorder that comes
with a USB cable for transferring voice recordings to a computer, and
the accompanying software is windows only.

I'd very much like to be able to do this transfer using linux instead of
needing windows though.

I think I -might- have the protocol mostly figured using a USB sniffer
on the windows side, but that may prove to be the easy part of this
project.  :-S

What I'm faced with now, is I have 10K of data which I'm assuming just
about has to be the voice data in some format or other - but it isn't
clear what format it's in.

Toward trying to figure out the format, I've:

1) Computed the difference in the lengths of the apparently-voice data
transferred via USB, and the "data" section of the resulting .wav file.
They do not differ by a constant - so it's not just a matter of tacking
on a header.

2) Computed the quotient of the lengths of the apparently-voice data
transferred via USB, and the "data" section of the resulting .wav file.
They do not differ by a constant factor - so it's not just a matter of
converting, for example, shorts to reals again and again, for example,
in which case the lengths, I would think, should differ by a constant
factor of 2.

3) Symlinked a file containing the data transferred via USB, to all of
the file extensions known to sox, and attempted to use sox to convert
those files to .wav.  None of the conversions succeeded.

4) Wrote a small python program to treat the data transferred via USB as
data to be stuffed into the "data" section of a .wav file, and created a
series of .wav files with all format types from 0 to 999.  sndfile-info
did not give errors for 9 of these, but none of them look or sound right
in gnusound.

5) Googled about olympus and voice/audio codecs, to see if there is a
proprietary one they favor.  It appears they were involved in the design
of the "DSS" format.

6) Downloaded "DSS Player Lite" from Olympus' web site, and copied the
data transferred via USB to "hi.dss".  However, DSS Player Lite did not
recognize the file format.

Does anyone have any thoughts about what else I might try to see what
format this data is in, and/or convert it to a known format?

I've got detailed documentation of most of what I've done so far on this
project at http://dcs.nac.uci.edu/~strombrg/VN480PC/  The page includes
some .wav's, a binary file I'm assuming is voice data in a mystery
codec, full USB sniffer logs, and so on.

Does anyone have any suggestions - especially toward how to convert that
"likely voice data" in the USB Sniff to some sort of known and
supported-on-linux codec?

Thanks!


Reply | Threaded
Open this post in threaded view
|

Re: Olypus voice recorder - codec?

David Santinoli
On Fri, Dec 30, 2005 at 10:56:34AM -0800, Dan Stromberg wrote:
>
> Does anyone have any suggestions - especially toward how to convert
> that "likely voice data" in the USB Sniff to some sort of known and
> supported-on-linux codec?

AFAICT the encoding should be (Adaptive Differential Pulse Code
Modulation).  Don't know about the file container though...

Cheers,
 David
--
 Palantir home page:  http://www.fastpath.it/products/palantir
 Palantir support:    <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: Olypus voice recorder - codec?

Erik de Castro Lopo-10
David Santinoli wrote:

> AFAICT the encoding should be (Adaptive Differential Pulse Code
> Modulation).  Don't know about the file container though...

There are at least 50 different, mutually incompatible types
of ADPCM. For instance, libsndfile supports:

        SF_FORMAT_IMA_ADPCM /* IMA ADPCM. */
        SF_FORMAT_MS_ADPCM /* Microsoft ADPCM. */
        SF_FORMAT_VOX_ADPCM /* OKI / Dialogix ADPCM */
        SF_FORMAT_G721_32 /* 32kbs G721 ADPCM encoding. */
        SF_FORMAT_G723_24 /* 24kbs G723 ADPCM encoding. */
        SF_FORMAT_G723_40 /* 40kbs G723 ADPCM encoding. */

which is a mere drop in the bucket.

Erik
--
+-----------------------------------------------------------+
  Erik de Castro Lopo
+-----------------------------------------------------------+
Question #2459: Ruling on shaking hands with the opposite sex
http://islamqa.com/index.php?ln=eng&ds=qa&lv=browse&QR=2459&dgn=4
Reply | Threaded
Open this post in threaded view
|

Re: Olypus voice recorder - codec?

Dan Stromberg
On Tue, 2006-01-03 at 17:50 +1100, Erik de Castro Lopo wrote:
> David Santinoli wrote:
>
> > AFAICT the encoding should be (Adaptive Differential Pulse Code
> > Modulation).  Don't know about the file container though...
>
> There are at least 50 different, mutually incompatible types
> of ADPCM. For instance, libsndfile supports:
>
> SF_FORMAT_IMA_ADPCM /* IMA ADPCM. */

The data is coming out of the windows app in this format: IMA ADPCM,
that is.

But unfortunately, I don't seem to be having much luck discovering what
codec they actually spit out of the voice recorder, prior to the
application apparently converting it to IMA ADPCM.

> SF_FORMAT_MS_ADPCM /* Microsoft ADPCM. */
> SF_FORMAT_VOX_ADPCM /* OKI / Dialogix ADPCM */
> SF_FORMAT_G721_32 /* 32kbs G721 ADPCM encoding. */
> SF_FORMAT_G723_24 /* 24kbs G723 ADPCM encoding. */
> SF_FORMAT_G723_40 /* 40kbs G723 ADPCM encoding. */
>
> which is a mere drop in the bucket.
>
> Erik

Reply | Threaded
Open this post in threaded view
|

Re: Olypus voice recorder - codec?

smithbone (Bugzilla)
On 1/5/06, Dan Stromberg <[hidden email]> wrote:
>> The data is coming out of the windows app in this format: IMA ADPCM,> that is.>> But unfortunately, I don't seem to be having much luck discovering what> codec they actually spit out of the voice recorder, prior to the> application apparently converting it to IMA ADPCM.
Have you tried feeding in a known constant sources using a signalgenerator?  Looking at the output for a 100,500,1k,2k,4k sine wavesmight give you some clues since you should be able to see when thedata repeats.
--Richard A. Smith