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 "<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="85a1c5">[email protected]</a>" 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
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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('"')
Method 2
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.
Method 3
There are several ways this can be accomplished.
-
You can make use of the builtin string function
.replace()
to replace all occurrences of quotes in a given string:>>> s = '"abcd" efgh' >>> s.replace('"', '') 'abcd efgh' >>>
-
You can use the string function
.join()
and a generator expression to remove all quotes from a given string:>>> s = '"abcd" efgh' >>> ''.join(c for c in s if c not in '"') 'abcd efgh' >>>
-
You can use a regular expression to remove all quotes from given string. This has the added advantage of letting you have control over when and where a quote should be deleted:
>>> s = '"abcd" efgh' >>> import re >>> re.sub('"', '', s) 'abcd efgh' >>>
Method 4
The easiest way is:
s = '"sajdkasjdsaasdasdasds"'
import json
s = json.loads(s)
Method 5
if string.startswith('"'): string = string[1:] if string.endswith('"'): string = string[:-1]
Method 6
You can replace “quote” characters with an empty string, like this:
>>> a = '"sajdkasjdsak" "asdasdasds"' >>> a '"sajdkasjdsak" "asdasdasds"' >>> a = a.replace('"', '') >>> a 'sajdkasjdsak asdasdasds'
In your case, you can do the same for out
variable.
Method 7
To add to @Christian’s comment:
Replace all single or double quotes in a string:
s = "'asdfa sdfa'" import re re.sub("["']", "", s)
Method 8
This will remove the first and last quotes in your string
import ast
example = '"asdfasdfasdf"'
result = ast.literal_eval(example)
print(result)
Output:
asdfasdfasdf
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0