with ultimate the spanish recognition language guide google espaƱol python string speech-recognition google-voice

ultimate - Eliminar citas de String en Python



speech recognition python spanish (5)

Hay varias maneras en que esto se puede lograr.

  • Puede utilizar la función de cadena incorporada .replace() para reemplazar todas las apariciones de comillas en una cadena dada:

    >>> s = ''"abcd" efgh'' >>> s.replace(''"'', '''') ''abcd efgh'' >>>

  • Puede usar la función de cadena .join() y una expresión generadora para eliminar todas las comillas de una cadena dada:

    >>> s = ''"abcd" efgh'' >>> ''''.join(c for c in s if c not in ''"'') ''abcd efgh'' >>>

  • Puede usar una expresión regular para eliminar todas las comillas de la cadena dada. Esto tiene la ventaja adicional de permitirle tener control sobre cuándo y dónde se debe eliminar una cotización:

    >>> s = ''"abcd" efgh'' >>> import re >>> re.sub(''"'', '''', s) ''abcd efgh'' >>>

Tengo un código de Python que reconocerá el habla con el motor de Google STT y me devolverá los resultados, pero los recibo en cadenas con "comillas". No quiero esas citas en mi código ya que lo usaré para ejecutar muchos comandos y no funcionará. No he intentado nada hasta el momento como no tengo nada para intentarlo! Esta es la función en el código de Python que reconocerá el habla:

def recog(): p = subprocess.Popen([''./speech-recog.sh''], stdout=subprocess.PIPE, stderr=subprocess.PIPE) global out,err out, err = p.communicate() print out

Esto es speech-recog.sh:

#!/bin/bash hardware="plughw:1,0" duration="3" lang="en" hw_bool=0 dur_bool=0 lang_bool=0 for var in "$@" do if [ "$var" == "-D" ] ; then hw_bool=1 elif [ "$var" == "-d" ] ; then dur_bool=1 elif [ "$var" == "-l" ] ; then lang_bool=1 elif [ $hw_bool == 1 ] ; then hw_bool=0 hardware="$var" elif [ $dur_bool == 1 ] ; then dur_bool=0 duration="$var" elif [ $lang_bool == 1 ] ; then lang_bool=0 lang="$var" else echo "Invalid option, valid options are -D for hardware and -d for duration" fi done arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent ''Mozilla/5.0'' --header ''Content-Type: audio/x-flac; rate=16000;'' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e ''s/[{}]/''''/g'' | awk -F":" ''{print $4}'' | awk -F"," ''{print $1}'' | tr -d ''/n'' rm /dev/shm/out.flac

Esto fue tomado del Programa de Comandos de Voz de Steven Hickson hecho para Raspberry Pi


Puede reemplazar los caracteres de "comillas" con una cadena vacía, como esta:

>>> a = ''"sajdkasjdsak" "asdasdasds"'' >>> a ''"sajdkasjdsak" "asdasdasds"'' >>> a = a.replace(''"'', '''') >>> a ''sajdkasjdsak asdasdasds''

En su caso, puede hacer lo mismo para out variable.


Puedes usar eval () para este propósito

>>> url = "''http address''" >>> eval(url) ''http address''

Si bien eval () representa un riesgo, creo que en este contexto es seguro.


Solo use los métodos de cadena .replace() si ocurren a lo largo, o .strip() si solo ocurren al inicio y / o finalización:

a = ''"sajdkasjdsak" "asdasdasds"'' a.replace(''"'', '''') ''sajdkasjdsak asdasdasds'' # or, if they only occur at start and finish a.strip(''/"'') ''sajdkasjdsak" "asdasdasds''


if string.startswith(''"''): string = string[1:] if string.endswith(''"''): string = string[:-1]