Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Reading sound output in Java

2,530 views
Skip to first unread message

GGolf

unread,
Oct 21, 2013, 11:22:45 PM10/21/13
to
Is there a way to read the output that the speakers produce?

Lew

unread,
Oct 23, 2013, 7:00:09 PM10/23/13
to
GGolf wrote:
> Is there a way to read the output that the speakers produce?

Are you talking about using a microphone to record the speaker sound,
and reading that in a program?

--
Lew

GGolf

unread,
Oct 24, 2013, 6:13:23 AM10/24/13
to
Yes, but using software instead of hardware. Basically, the "Stereo Mix"
option that most systems had built-in years ago.

Jeff Higgins

unread,
Oct 24, 2013, 11:47:01 AM10/24/13
to

Lew

unread,
Oct 24, 2013, 2:18:03 PM10/24/13
to
You're contradicting yourself, or else I'm not getting you. You said "Yes" to the
microphone question, but you aren't using hardware. What?

I have no notion of what you mean by the "Stereo Mix" option.

How about you actually define for us precisely what you want to do?

Then maybe someone can help you.

Here's the thing: how else will you capture what the speakers produce if you
don't use a microphone?

--
Lew

Jeff Higgins

unread,
Oct 24, 2013, 4:27:47 PM10/24/13
to
stereo+mix+java I suspect shows results for what he is after
a search on javasound brings much more info

Jeff Higgins

unread,
Oct 24, 2013, 4:36:28 PM10/24/13
to
I also suspect he might find what he wants in the Java Sound Tutorial
<http://docs.oracle.com/javase/tutorial/sound/index.html>

Jens

unread,
Oct 25, 2013, 2:03:31 AM10/25/13
to
On Tue, 22 Oct 2013 08:52:45 +0530, GGolf <inv...@invalid.com> wrote:

>Is there a way to read the output that the speakers produce?
Richard Baldwin has many fully functional and well commented examples on Java Sound.
http://www.dickbaldwin.com/tocadv.htm
Scoll down to Java Sound.

The subject of Java Sound is very large and can be a bit overwhelming for the
uninitiated.
His examples are the best I have seen on Java Sound.

Another source of information is
http://www.jsresources.org/faq.html
Treats Java Sound to great detail.

JensJ

Joerg Meier

unread,
Oct 25, 2013, 7:47:41 AM10/25/13
to
On Thu, 24 Oct 2013 11:18:03 -0700 (PDT), Lew wrote:

> On Thursday, October 24, 2013 3:13:23 AM UTC-7, GGolf wrote:
>> On 10/24/2013 4:30 AM, Lew wrote:
>>> GGolf wrote:
>>>> Is there a way to read the output that the speakers produce?
>>> Are you talking about using a microphone to record the speaker sound,
>>> and reading that in a program?
>> Yes, but using software instead of hardware. Basically, the "Stereo Mix"
>> option that most systems had built-in years ago.
> You're contradicting yourself, or else I'm not getting you. You said "Yes" to the
> microphone question, but you aren't using hardware. What?

> I have no notion of what you mean by the "Stereo Mix" option.

In Windows (and. presumably, other OSs), you can record "What you hear", as
in, you can record whatever your speakers are playing. This is done on a
software level, so it works even if you have no speakers or microphones. It
seems to just intercept and copy the data that gets sent to the speaker
output. I would guess that's what he want.

Liebe Gruesse,
Joerg

--
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.

Lew

unread,
Oct 25, 2013, 5:56:40 PM10/25/13
to
Joerg Meier wrote:
> Lew wrote:
>> GGolf wrote:
> >> Lew wrote:
> >>> GGolf wrote:
> >>>> Is there a way to read the output that the speakers produce?
>
> >>> Are you talking about using a microphone to record the speaker sound,
> >>> and reading that in a program?
>
> >> Yes, but using software instead of hardware. Basically, the "Stereo Mix"
> >> option that most systems had built-in years ago.
>
> > You're contradicting yourself, or else I'm not getting you. You said "Yes" to the
> > microphone question, but you aren't using hardware. What?
>
> > I have no notion of what you mean by the "Stereo Mix" option.
>
>
> In Windows (and. presumably, other OSs), you can record "What you hear", as
> in, you can record whatever your speakers are playing. This is done on a
> software level, so it works even if you have no speakers or microphones. It
> seems to just intercept and copy the data that gets sent to the speaker
> output. I would guess that's what he want.

Maybe, but what he asked for was "the output that the speakers produce", not the
signal that is input to the speakers.

If he wants the signal as sent to the speakers, does he want the actual electrical
signal, decoded and turned into some file format, or does he want a copy of the
MP3 or WAV or whatever generated that signal, or what?

You can guess all you want, but absent the *OP* answering the question, it is only a guess.

As another responder said, the question is vague, and certainly ambiguous.

So, OP, how about it? Are you going to ask a good question, or give up on getting a
good answer?

The technique you use will depend on exactly what you want.

--
Lew

GGolf

unread,
Oct 26, 2013, 4:47:04 AM10/26/13
to
On 10/26/2013 3:26 AM, Lew wrote:
> Joerg Meier wrote:
>> Lew wrote:
>>> GGolf wrote:
>>>> Lew wrote:
>>>>> GGolf wrote:
>>>>>> Is there a way to read the output that the speakers produce?
>>
>>>>> Are you talking about using a microphone to record the speaker sound,
>>>>> and reading that in a program?
>>
>>>> Yes, but using software instead of hardware. Basically, the "Stereo Mix"
>>>> option that most systems had built-in years ago.
>>
>>> You're contradicting yourself, or else I'm not getting you. You said "Yes" to the
>>> microphone question, but you aren't using hardware. What?
>>
>>> I have no notion of what you mean by the "Stereo Mix" option.
>>
>>
>> In Windows (and. presumably, other OSs), you can record "What you hear", as
>> in, you can record whatever your speakers are playing. This is done on a
>> software level, so it works even if you have no speakers or microphones. It
>> seems to just intercept and copy the data that gets sent to the speaker
>> output. I would guess that's what he want.
>
> Maybe, but what he asked for was "the output that the speakers produce", not the
> signal that is input to the speakers.

Sorry for being so vague. I should have said "the signal that is input
to the speakers".

>
> If he wants the signal as sent to the speakers, does he want the actual electrical
> signal, decoded and turned into some file format, or does he want a copy of the
> MP3 or WAV or whatever generated that signal, or what?
>

I _think_ either will do.

Let me tell you the use case: I want to
(i) capture a VOIP conversation (which could be between multiple
participants, or just two participants), and
(ii) convert that to text using a speech recognizer (using one of the
various implementations of JSAPI), and
(iii) display that text on screen.

Note that this will also mean that I should be able to capture the input
to the microphone at the same time. However, if I just get the signal
that's input to the speakers, I think that would be a great beginning -
I could at least transcribe the incoming side.

> You can guess all you want, but absent the *OP* answering the question, it is only a guess.
>
> As another responder said, the question is vague, and certainly ambiguous.
>
> So, OP, how about it? Are you going to ask a good question, or give up on getting a
> good answer?

I hope I've clarified the question at least a little more, based on your
useful hints.

I also aim to try experimenting with the Java Sound API as suggested by
JensJ and others elsethread.

Andreas Leitgeb

unread,
Oct 26, 2013, 5:32:03 AM10/26/13
to
GGolf <inv...@invalid.com> wrote:
> Let me tell you the use case: I want to
> (i) capture a VOIP conversation (which could be between multiple
> participants, or just two participants), and
> (ii) convert that to text using a speech recognizer (using one of the
> various implementations of JSAPI), and
> (iii) display that text on screen.

Is this going to happen real-time? (I have no idea if consumer-grade
speech-to-text is fast enough for that.)

If so, I'd use a second PC (thus with independent sound system) with
a microphone & line-in(connected to a "Y"-split of the headphones' cable)
to capture both outgoing and incoming speech.
Unless you've got some very special sound hardware on the primary (VoIP
running) machine, capturing both input and output (where input isn't
itself mixed into the output) may just not be possible.

PS: note, that recording of conversations may have legal issues, so make
sure that at the start of the recording everyone involved knows it and
agrees to it. (this may not be relevant if the signal is used *only* for
speech-to-text and displaying of text, and neither text nor signal are
saved, but I'm not a lawyer.) If you were from NSA, then you probably
wouldn't need to ask here in the first place...

GGolf

unread,
Oct 26, 2013, 6:10:38 AM10/26/13
to
On 10/26/2013 3:02 PM, Andreas Leitgeb wrote:
> GGolf <inv...@invalid.com> wrote:
>> Let me tell you the use case: I want to
>> (i) capture a VOIP conversation (which could be between multiple
>> participants, or just two participants), and
>> (ii) convert that to text using a speech recognizer (using one of the
>> various implementations of JSAPI), and
>> (iii) display that text on screen.
>
> Is this going to happen real-time? (I have no idea if consumer-grade
> speech-to-text is fast enough for that.)

I've seen a couple of demos where this has been done, though I guess the
participants have to speak slower than usual for the transcription to
make some sense.

>
> If so, I'd use a second PC (thus with independent sound system) with
> a microphone & line-in(connected to a "Y"-split of the headphones' cable)
> to capture both outgoing and incoming speech.
> Unless you've got some very special sound hardware on the primary (VoIP
> running) machine, capturing both input and output (where input isn't
> itself mixed into the output) may just not be possible.

Hmm...I think you got a point here. I remember that the Stereo Mix
option on Windows wouldn't record the input to the microphone unless you
would /play it back/ to the speakers.

>
> PS: note, that recording of conversations may have legal issues, so make
> sure that at the start of the recording everyone involved knows it and
> agrees to it. (this may not be relevant if the signal is used *only* for
> speech-to-text and displaying of text, and neither text nor signal are
> saved, but I'm not a lawyer.)

Only the text is going to be displayed (the user can save the transcript
if they want, but it won't go anywhere by itself).

> If you were from NSA, then you probably
> wouldn't need to ask here in the first place...
>

True :)

Andreas Leitgeb

unread,
Oct 26, 2013, 7:45:38 AM10/26/13
to
GGolf <inv...@invalid.com> wrote:
>> Unless you've got some very special sound hardware on the primary (VoIP
>> running) machine, capturing both input and output (where input isn't
>> itself mixed into the output) may just not be possible.
> Hmm...I think you got a point here. I remember that the Stereo Mix
> option on Windows wouldn't record the input to the microphone unless you
> would /play it back/ to the speakers.

The core of the problem appears to be that there is only one sound-device
on a typical system, and the mixer settings are a property of that one device,
not per-process.

If the VoIP application obviously specifically requires to record only the
microphone (in order to transmit it to the parties), then another process
cannot have its own settings to record everything.

I'm not sure if you need a recording solution for yourself, or if you
intended to create a transcription add-on to be used by Joe "VoIP" User.
If it was the latter, then I fear it won't be that easy. If you create
your own VoIP client that would be a different story, and also if there
was an existing VoIP client with a decent API for plugging into the sound
stream.

Jeff Higgins

unread,
Oct 26, 2013, 11:36:20 AM10/26/13
to

Jeff Higgins

unread,
Oct 26, 2013, 11:49:53 AM10/26/13
to

Jeff Higgins

unread,
Oct 26, 2013, 12:43:40 PM10/26/13
to

Jeff Higgins

unread,
Oct 26, 2013, 1:10:45 PM10/26/13
to

varunk...@gmail.com

unread,
Oct 23, 2016, 2:28:17 AM10/23/16
to
On Tuesday, October 22, 2013 at 8:52:45 AM UTC+5:30, GGolf wrote:
> Is there a way to read the output that the speakers produce?

Capturing audio from a microphone ...yes its there.But is it possible to intercept the lines to the speaker and record the lines to the speaker?

rafiqul.se...@gmail.com

unread,
Aug 8, 2019, 11:19:51 PM8/8/19
to
On Tuesday, October 22, 2013 at 10:22:45 AM UTC+7, GGolf wrote:
> Is there a way to read the output that the speakers produce?

I also need to record audio from system background .For example I am talking in skype with my friends .Now I want record our conversation with java.Is there any possibility?.If you found please let me know .Thanks

Daniele Futtorovic

unread,
Aug 9, 2019, 1:07:36 PM8/9/19
to
What you're looking for is called loopback capture, or loopback
recording. To my knowledge, that is not possible to do purely in Java.
You have to go native.
I've written Java software that does that, among other things, on
Windows. Here's a good start for resources on that particular part:
<https://docs.microsoft.com/en-us/windows/win32/coreaudio/loopback-recording>.

(ALSA or pulseaudio for Linux should be similar).

--
DF.
0 new messages