I have a python Code that will recognize speech using the Google STT engine and give me back the results but I get the results in strings with "quotes". I don't want that quotes in my code as I will use it to run many commands and it doesn't work. I haven't tried anything so far as I didn't get anything to try! This is the function in the python code that will recognize speech:
def recog(): p = subprocess.Popen(['./speech-recog.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) global out,err out, err = p.communicate() print out
This is 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
This was taken from Steven Hickson's Voicecommand Program made for Raspberry Pi
To remove double quotes just from the beginning and end of the String, we can use a more specific regular expression: String result = input. replaceAll("^\"|\"$", ""); After executing this example, occurrences of double quotes at the beginning or at end of the String will be replaced by empty strings.
Using the strip() Function to Remove Double Quotes from String in Python. We use the strip() function in Python to delete characters from the start or end of the string. We can use this method to remove the quotes if they exist at the start or end of the string.
Just use string methods .replace()
if they occur throughout, or .strip()
if they only occur at the start and/or finish:
a = '"sajdkasjdsak" "asdasdasds"' a = a.replace('"', '') 'sajdkasjdsak asdasdasds' # or, if they only occur at start and end... a = a.strip('\"') 'sajdkasjdsak" "asdasdasds' # or, if they only occur at start... a = a.lstrip('\"') # or, if they only occur at end... a = a.rstrip('\"')
You can use eval() for this purpose
>>> url = "'http address'" >>> eval(url) 'http address'
while eval() poses risk , i think in this context it is safe.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With