[C#] Opnemen audio PCM format

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 21:40
Ik ben een beetje aan het hobbyen (al de hele dag) met het opnemen van een audio stream om deze naar google Speech to Text te sturen en te kijken of het werkt.

Nu zit ik alleen in de problemen met het opnemen van de audio vanuit de speakers
Ik kan dit opnemen middels CSCore als wav, echter is dit geen PCM valide formaat.
Als ik hier een ander waveformat op toepas dan hoor ik alleen nog maar ruis.

Hierna converteer ik het naar MP3 en ook nog naar flac met de hand (voornamelijk om te kijken of het PCM valide is).

Echter na uren zoeken, trial en error en proberen loop ik nu helemaal vast, ik heb of audio in verkeerd geen PCM formaat, of ik heb audio in PCM formaat wat alleen maar ruis is.
Kan iemand mij hier verder bij helpen?

De waveformat die ik hieronder aanmaak kan ik dus ook gebruiken bij de wavewriter, echter heb ik dan ruis.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
static public void Main(string[] args)
        {
            string filename = "S:\\speech\\samples\\sample.wav";
            string filename_mp3 = "S:\\speech\\samples\\sample.mp3";


            //cap from audio card
            using (WasapiCapture capture = new CSCore.SoundIn.WasapiLoopbackCapture())
            {
                //initialize the selected device for recording
                capture.Initialize();

                CSCore.WaveFormat wf = new CSCore.WaveFormat();

                //create a wavewriter to write the data to
                using (CSCore.Codecs.WAV.WaveWriter w = new CSCore.Codecs.WAV.WaveWriter("S:\\speech\\samples\\sample.wav", capture.WaveFormat))
                {
                    //setup an eventhandler to receive the recorded data
                    capture.DataAvailable += (s, e) =>
                    {
                        //save the recorded audio
                        w.Write(e.Data, e.Offset, e.ByteCount);
                    };

                    //start recording
                    capture.Start();

                    Console.ReadKey();

                    //stop recording
                    capture.Stop();

                    
                }
            }
            //convert to mp3
            using (var reader = new WaveFileReader(filename))
            {
                using (var writer = new NAudio.Lame.LameMP3FileWriter(filename_mp3, reader.WaveFormat, 128))
                {
                    reader.CopyTo(writer);
                }
            }

        }


Al gevonden bronnen:
https://naudio.codeplex.com/
http://stackoverflow.com/...ing-and-playing-mp3-audio
http://stackoverflow.com/...ut-opens-fine-in-audacity
http://stackoverflow.com/...i-record-audio-with-c-wpf
http://stackoverflow.com/...mp3-or-a-wav-file-to-flac
http://stackoverflow.com/...n-memory-stream-in-naudio
https://github.com/filoe/cscore
enzovoorts

Acties:
  • 0 Henk 'm!

  • efan
  • Registratie: Januari 2001
  • Niet online
http://stackoverflow.com/...ding-audio-from-soundcard
geen idee of het uitmaakt... regel 8 en 13 zijn net iets anders :)

[ Voor 28% gewijzigd door efan op 06-01-2017 15:17 ]


Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 21:40
ido schreef op vrijdag 6 januari 2017 @ 15:15:
http://stackoverflow.com/...ding-audio-from-soundcard
geen idee of het uitmaakt... regel 8 en 13 zijn net iets anders :)
Als je goed kijkt, zit deze er al in, maar dit is dus het probleem wat ik heb.
Dat voorbeeld is geen PCM valide formaat.

Dit was namelijk 1 van de eerste die ik tegen kwam :P

[ Voor 6% gewijzigd door tha_crazy op 06-01-2017 15:29 ]


Acties:
  • 0 Henk 'm!

  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
Ik weet van mijn vorige werk dat we gebruik maakten van Alvas Audio. Hier deden we ook speech to text op de audio.

Zie http://www.alvas.net/ voor meer info (weet niet of het gratis is).

Acties:
  • 0 Henk 'm!

  • efan
  • Registratie: Januari 2001
  • Niet online
tha_crazy schreef op vrijdag 6 januari 2017 @ 15:29:
[...]


Als je goed kijkt, zit deze er al in, maar dit is dus het probleem wat ik heb.
Dat voorbeeld is geen PCM valide formaat.

Dit was namelijk 1 van de eerste die ik tegen kwam :P
en deze (m.b.t. integer verschil wav-lame):
MSDN: Sample – WASAPI loopback capture (record what you hear) – M...

Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 21:40
The_Ghost16 schreef op vrijdag 6 januari 2017 @ 15:32:
Ik weet van mijn vorige werk dat we gebruik maakten van Alvas Audio. Hier deden we ook speech to text op de audio.

Zie http://www.alvas.net/ voor meer info (weet niet of het gratis is).
Helaas niet gratis, maar ga er toch even naar kijken
Die snap ik niet helemaal, maar het bracht me wel op een idee.
Heb nu bij de MP3 convert (die ik ook naar google kan sturen) een nieuw waveformat opgegeven wat PCM compliant is.
Echter geeft dit weer hetzelfde issue, ruis.

C#:
1
2
3
4
5
6
7
using (var reader = new WaveFileReader(filename))
            {
                var waveformat = new NAudio.Wave.WaveFormat();
                using (var writer = new NAudio.Lame.LameMP3FileWriter(filename_mp3, waveformat, 128))
                {
                    reader.CopyTo(writer);
                }

[ Voor 14% gewijzigd door tha_crazy op 06-01-2017 15:56 ]


Acties:
  • 0 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 07-10 10:46
Gebruik je nou NAudio of CSCore ?

als je capture.WaveFormat bekijkt in de debugger, wat voor format heeft deze?

Misschien kan je deze er tussen hangen (CSCore):

http://filoe.github.io/cs...lease/#type/SampleToPcm24

met behulp van deze?

http://filoe.github.io/cs...lease/#type/SoundInSource

Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 21:40
epic007 schreef op vrijdag 6 januari 2017 @ 15:56:
Gebruik je nou NAudio of CSCore ?

als je capture.WaveFormat bekijkt in de debugger, wat voor format heeft deze?

Misschien kan je deze er tussen handen (CSCore):

http://filoe.github.io/cs...lease/#type/SampleToPcm24

met behulp van deze?

http://filoe.github.io/cs...lease/#type/SoundInSource
Voor de Capture maak ik gebruik van CSCore, voor de convert van NAudio.
De capturewave maakt gebruik van de CSCore.WaveFormat.

Ik ga er even mee hobbyen, maar ben bang dat dit langzaamaan de pet de boven gaat :P
HEb ook het idee dat ik het in de verkeerde hoek zit te zoeken, want elke convert die ik tot op heden doe gaat verkeerd.
Ik heb meer het idee dat ik het juist bij de record naar WAV al in het PCM formaat moet hebben.

Screenshot der verduidelijking.
De eerste is de waveformat zoals ik hem van de stream krijg (playback device van de laptop in dit geval)
de 2e is zoals ik hem moet hebben, maar zodra hem dus converteer van extensible naar pcm krijg ik ruis.
Afbeeldingslocatie: https://i.imgur.com/X2KtWWT.png

[ Voor 28% gewijzigd door tha_crazy op 06-01-2017 16:12 ]

Pagina: 1