<?xml version='1.0' encoding='UTF-8'?>
<elementos_gw>
  <documento>
    <id>922</id>
    <autor>5</autor>
    <nome>falawin.php</nome>
    <nome_facil>falawin php</nome_facil>
    <criacao>2010-12-31 15:38:02</criacao>
    <alteracao>2010-12-31 17:36:33</alteracao>
    <texto>{{{
&lt;?php
# Sistema de reconhecimento de fala. Idioma português brasileiro.
# Mostra um menu de opções e cola o resultado no aplicativo em uso.
# Feito para windows (testado no Windows Vista). Licença: Domínio público.
# (c) 2010 Sony Fermino dos Santos - http://gigawiki.com/sony/
# Fornecido sem quaisquer garantias. Use por sua conta e risco.
# Veja instruções de uso em http://gigawiki.com/sony/reconhecimento-de-fala
#
# Parte destes comentários foi redigida verbalmente com este programa.

# abre comunicação com o Julius
$f = popen(&#039;julius -C opcoes.jconf&#039;, &#039;r&#039;);

while (true) {
  # aguarda a saída de 10 opções do julius
  $linha = &#039;&#039;;
  while (strpos($linha .= fread($f, 4096), &#039;sentence10&#039;) == false);

  # separa as frases candidatas
  preg_match_all(&#039;/sentence\d+.(.*)/m&#039;, $linha, $matches);
  $opcoes = $matches[1];

  # ignora a respiração
  $opcoes = array_map(&#039;trim&#039;, $opcoes);
  $opcoes = array_map(&#039;utf8_decode&#039;, $opcoes);
  if (in_array(&#039;há um ano&#039;, $opcoes)) {
    ignora(&#039;respiração&#039;, opcoes);
    continue;
  }

  # monta um menu com as opções, e cola o resultado na aplicação corrente
  menu($opcoes);
}

# monta um menu com as opções
function menu($opcoes) {
  global $esta_janela;

  # monta opções de comando
  $op_cmd = &#039;&#039;;
  $tamanho = 0;
  foreach($opcoes as $opcao) {
    if ($opcao) {
      # tira espaços repetidos
      $opcao = preg_replace(&#039;/\s{2,}/&#039;, &#039; &#039;, $opcao);
      $op_cmd .= &quot; \&quot;$opcao\&quot;&quot;;
      $tamanho += strlen($opcao);
    }
  }

  # na escolha da frase pode haver ruídos
  # se o tamanho total for pequeno, ignora.
  if ($tamanho &lt; 50) return ignora(&quot;tamanho insuficiente: $tamanho&quot;, $opcoes);

  # monta comando

  # comando se o autohotkey estiver instalado (no vista):
  # $comando = &quot;\&quot;c:\program Files\AutoHotkey\AutoHotkey.exe\&quot; menu.ahk $op_cmd&quot;;

  # comando para uso com menu.exe:
  $comando = &quot;menu $op_cmd&quot;;

  # executa o comando
  shell_exec($comando);
}

function ignora($motivo, $opcoes) {
  # loga motivo
  echo &quot;\nIgnorando: $motivo\nOpções:\n&quot;;
  foreach ($opcoes as $opcao) echo &quot;    &#039;$opcao&#039;\n&quot;;
  return false;
}

?&gt;
}}}
</texto>
    <publico>1</publico>
    <original>0</original>
    <anterior>0</anterior>
    <versao>0</versao>
    <traducao>0</traducao>
    <propriedade>
      <nome>projeto</nome>
      <valor>Reconhecimento de fala</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>linguagem</nome>
      <valor>php</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>categ</nome>
      <valor>script</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>sistema</nome>
      <valor>windows</valor>
      <publico>1</publico>
    </propriedade>
  </documento>
</elementos_gw>
