Voor het automatiseren van tests voor een web applicatie wil ik testen of de player ook audio afspeelt. Mijn plan was om een audio sample van x seconden op te nemen en deze te analyseren om te bepalen of het geheel boven een bepaalde treshold komt.
Na wat zoekwerk kwam ik op de PyAudio library. In eerste instantie heb ik het standaard code voorbeeld gebruikt (zie hieronder). Dit werkte goed en nam op het juiste moment op, maar alleen mijn onboard microfoon in plaats van de audio van de browser. Na veel zoekwerk kom ik op internet ook alleen voorbeelden tegen die werken met de microfoon.
Ik heb nog wat gespeeld met de 'input_device_index' en 'output_device_index' die meegegeven kunnen worden bij 'audio.open()'. Maar dit resulteerde in foutmeldingen of alsnog een opgenomen microfoon kanaal.
Verder zoekwerk op internet levert ook niet direct een andere library op waarbij je kunt specificeren om enkel de audio van de browser te recorden.
Na wat zoekwerk kwam ik op de PyAudio library. In eerste instantie heb ik het standaard code voorbeeld gebruikt (zie hieronder). Dit werkte goed en nam op het juiste moment op, maar alleen mijn onboard microfoon in plaats van de audio van de browser. Na veel zoekwerk kom ik op internet ook alleen voorbeelden tegen die werken met de microfoon.
Ik heb nog wat gespeeld met de 'input_device_index' en 'output_device_index' die meegegeven kunnen worden bij 'audio.open()'. Maar dit resulteerde in foutmeldingen of alsnog een opgenomen microfoon kanaal.
Verder zoekwerk op internet levert ook niet direct een andere library op waarbij je kunt specificeren om enkel de audio van de browser te recorden.
Python:
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
| import pyaudio import wave chunk = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 10 audio = pyaudio.PyAudio() stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, output=True, frames_per_buffer=chunk) print("* recording") audio_frames = [] for i in range(0, 44100 // chunk * RECORD_SECONDS): data = stream.read(chunk) audio_frames.append(data) print("* done") stream.stop_stream() stream.close() audio.terminate() waveFile = wave.open('test.wav', 'wb') waveFile.setnchannels(CHANNELS) waveFile.setsampwidth(audio.get_sample_size(FORMAT)) waveFile.setframerate(RATE) waveFile.writeframes(b''.join(audio_frames)) waveFile.close() |
Rebuilding knowledge database