-
Notifications
You must be signed in to change notification settings - Fork 0
/
AnalyzeSoundStream.py
32 lines (26 loc) · 1.06 KB
/
AnalyzeSoundStream.py
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
import json
from InstrumentLoader import InstrumentLoader
import keras.models
from KerasTensorFlowAnalyzer import KerasTensorFlowAnalyzer
import MfccComparisonAnalyzer
import os
from SoundStreamAnalyzer import SoundStreamAnalyzer
import sys
if len(sys.argv) < 5:
print('Usage:')
print(' <wav-file-path> <instruments-folder-path> <model-file-path> <model-params-json-path>')
exit(1)
wavFilePath = sys.argv[1]
instrumentsFolderPath = sys.argv[2]
modelFilePath = sys.argv[3]
modelParamsPath = sys.argv[4]
trainedModel = keras.models.load_model(modelFilePath)
# See SoundModelParams.py
f = open(modelParamsPath)
modelParams = json.load(f)
orderedResultInstrumentLabels = modelParams["instruments"]
print("Ordered labels:", orderedResultInstrumentLabels)
instruments = InstrumentLoader(instrumentsFolderPath, orderedResultInstrumentLabels)
analyzers = [ KerasTensorFlowAnalyzer(trainedModel, modelParams) ] + list(MfccComparisonAnalyzer.constructFromInstruments(instruments))
analyzer = SoundStreamAnalyzer(wavFilePath, instruments, analyzers, 0.9)
analyzer.getMatches()