A computer-implemented method comprising: receiving a first plurality of inputs into at least one user interface element in an application while the application is in a first state, wherein the first state of the application comprises a state in which said at least one user interface element currently has the input focus; training a first language model based on the first plurality of inputs and on a frequency with which a plurality of input values identified in the first plurality of inputs occur, wherein the training further comprises: identifying, for one of the first plurality of inputs, an input value; determining that the input value is an instance of a concept; identifying, in the first plurality of inputs, a number of instances of the concept; identifying a frequency with which the concept occurs in the first plurality of inputs; and training the first language model based on the identified frequency; analyzing application data of the application to determine a state of the application; comparing the determined state of the application to a state associated with the first language model; determining that the determined state of the application is the first state associated with the first language model; and in response to the determination that the state of the application is the first state, selecting the first language model and applying the first language model to a first speech input provided to the application, to create an input into the at least one user interface element which currently has the input focus. receiving a first plurality of inputs into at least one user interface element in an application while the application is in a first state, wherein the first state of the application comprises a state in which said at least one user interface element currently has the input focus; training a first language model based on the first plurality of inputs and on a frequency with which a plurality of input values identified in the first plurality of inputs occur, wherein the training further comprises: identifying, for one of the first plurality of inputs, an input value; determining that the input value is an instance of a concept; identifying, in the first plurality of inputs, a number of instances of the concept; identifying a frequency with which the concept occurs in the first plurality of inputs; and training the first language model based on the identified frequency; identifying, for one of the first plurality of inputs, an input value; determining that the input value is an instance of a concept; identifying, in the first plurality of inputs, a number of instances of the concept; identifying a frequency with which the concept occurs in the first plurality of inputs; and training the first language model based on the identified frequency; analyzing application data of the application to determine a state of the application; comparing the determined state of the application to a state associated with the first language model; determining that the determined state of the application is the first state associated with the first language model; and in response to the determination that the state of the application is the first state, selecting the first language model and applying the first language model to a first speech input provided to the application, to create an input into the at least one user interface element which currently has the input focus.