A method for keyword detection, the method comprising: acquiring a variable length acoustic signal via an audio recording subsystem; transforming the variable length acoustic signal to a variable length feature map using a feature extractor, wherein the variable length feature map comprises a plurality of feature vectors; aggregating the plurality of feature vectors using a parametric pooling layer to form an embedding vector, wherein the embedding vector is of a pre-determined length; mapping the embedding vector to a classification score for a pre-determined keyword using a classifier; comparing the classification score against a classification score threshold; and responding to the classification score exceeding the classification score threshold by: retrieving instructions indexed in non-transitory memory by the pre-determined keyword; and executing the instructions; characterised in that aggregating the plurality of feature vectors using the parametric pooling layer to form the embedding vector comprises: determining for each of the plurality of feature vectors a degree of match with a query vector, wherein, in particular, the query vector comprises a plurality of learned values; weighting each of the plurality of feature vectors based on a respective degree of match with the query vector to form a plurality of weighted feature vectors; and summing the plurality of weighted feature vectors to form the embedding vector. acquiring a variable length acoustic signal via an audio recording subsystem; transforming the variable length acoustic signal to a variable length feature map using a feature extractor, wherein the variable length feature map comprises a plurality of feature vectors; aggregating the plurality of feature vectors using a parametric pooling layer to form an embedding vector, wherein the embedding vector is of a pre-determined length; mapping the embedding vector to a classification score for a pre-determined keyword using a classifier; comparing the classification score against a classification score threshold; and responding to the classification score exceeding the classification score threshold by: retrieving instructions indexed in non-transitory memory by the pre-determined keyword; and executing the instructions; characterised in that aggregating the plurality of feature vectors using the parametric pooling layer to form the embedding vector comprises: determining for each of the plurality of feature vectors a degree of match with a query vector, wherein, in particular, the query vector comprises a plurality of learned values; weighting each of the plurality of feature vectors based on a respective degree of match with the query vector to form a plurality of weighted feature vectors; and summing the plurality of weighted feature vectors to form the embedding vector. retrieving instructions indexed in non-transitory memory by the pre-determined keyword; and executing the instructions; characterised in that aggregating the plurality of feature vectors using the parametric pooling layer to form the embedding vector comprises: determining for each of the plurality of feature vectors a degree of match with a query vector, wherein, in particular, the query vector comprises a plurality of learned values; weighting each of the plurality of feature vectors based on a respective degree of match with the query vector to form a plurality of weighted feature vectors; and summing the plurality of weighted feature vectors to form the embedding vector. determining for each of the plurality of feature vectors a degree of match with a query vector, wherein, in particular, the query vector comprises a plurality of learned values; weighting each of the plurality of feature vectors based on a respective degree of match with the query vector to form a plurality of weighted feature vectors; and summing the plurality of weighted feature vectors to form the embedding vector.