Existe uma maneira de forçar a API do Google Speech a retornar apenas palavras como resposta?

Estou usando o Google nesta API:

https://www.google.com/speech-api/v2/recognize?output=json&lang="+ language_code +" & key = "Minha chave"

para reconhecimento de fala e está funcionando muito bem.

O problema é com números, ou seja, se eu disserone two three four o resultado será1234 e se eu disserone thousand two hundred thirty four o resultado ainda é1234.

Outra questão é que, em outros idiomas, ou seja, a palavraelf em alemão éeleven. Se você dizelf o resultado é11, em vez de elfo.

Eu sei que não temos controle sobre a API, mas existem parâmetros ou hacks que podemos adicionar a essa API para forçá-la a retornar apenas palavras.

A resposta algumas vezes tem o resultado correto, mas nem sempre.

Estas são respostas de amostra

1) Quando digo "um dois três quatro"

{"result":[{"alternative":[{"transcript":"1234","confidence":0.47215959},{"transcript":"1 2 3 4","confidence":0.25},{"transcript":"one two three four","confidence":0.25},{"transcript":"1 2 34","confidence":0.33333334},{"transcript":"1 to 34","confidence":1}],"final":true}],"result_index":0}

2) Quando digo "mil duzentos e trinta e quatro"

{"result":[{"alternative":[{"transcript":"1234","confidence":0.94247383},{"transcript":"1.254","confidence":1},{"transcript":"1284","confidence":1},{"transcript":"1244","confidence":1},{"transcript":"1230 4","confidence":1}],"final":true}],"result_index":0}

O que eu fiz.

Verifique se o resultado é um número. Em seguida, divida cada número por espaço e verifique se há a mesma sequência na matriz de resultados. Neste exemplo, O resultado 1234 se torna 1 2 3 4 e pesquisará se há uma sequência semelhante na matriz de resultados e depois a converterá em palavras.

Este é o código.

 String numberPattern = "[0-9]";
  Pattern r1 = Pattern.compile(numberPattern);
  Matcher m2 = r1.matcher(output);
  if (m2.find()) {
      char[] digits2 = output.toCharArray();
      String digit = "";
      for (char c: digits2) {
          digit += c + " ";
      }

      for (int i = 1; i < jsonArray2.length(); i++) {
          String value = jsonArray2.getJSONObject(i).getString("transcript");
          if (digit.trim().equals(value.trim())) {
              output = digit + " ";
          }
      }
  }

Portanto, a questão é quando eu "digo treze quatro oito oito" esse método dividirá 13 como um três e, portanto, não será uma solução confiável.

Atualizar

Tentei a nova API de visão em nuvem (https://cloud.google.com/speech/) e é um pouco melhor que o v2. O resultado paraone two three four está nas próprias palavras para as quais minha solução alternativa também está funcionando. Mas quando eu digothirteen four eight ainda é o mesmo resultado que na v2.

E também o elfo ainda tem 11 anos em alemão.

Também tenteispeech_context isso também não funcionou.

questionAnswers(2)

yourAnswerToTheQuestion