Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to pause recording ? #66

Closed
mrmushfiq opened this issue Nov 15, 2015 · 5 comments
Closed

How to pause recording ? #66

mrmushfiq opened this issue Nov 15, 2015 · 5 comments

Comments

@mrmushfiq
Copy link

Hello, is there any way to pause recording for a certain amount of time?
update : i might have found a way by setting the audio input zero and using time.sleep but a built in feature would be great

@Uberi
Copy link
Owner

Uberi commented Nov 15, 2015

Assuming you're using recognizer_instance.listen_in_background, you can stop recording using the stop function returned by that function:

import time
import speech_recognition as sr

# this is called from the background thread
def callback(recognizer, audio):
    # received audio data, now we'll recognize it using Google Speech Recognition
    try:
        print("Google Speech Recognition thinks you said " + recognizer.recognize_google(audio))
    except sr.UnknownValueError:
        print("Google Speech Recognition could not understand audio")
    except sr.RequestError as e:
        print("Could not request results from Google Speech Recognition service; {0}".format(e))

r = sr.Recognizer()
m = sr.Microphone()

stop_listening = r.listen_in_background(m, callback)

# stop listening, wait for 5 seconds, then restart listening
stop_listening()
time.sleep(5)
stop_listening = r.listen_in_background(m, callback)

# do other things on the main thread
while True: time.sleep(0.1)

@mrmushfiq
Copy link
Author

Thanks a lot! I'll try that and update.

@mrmushfiq
Copy link
Author

Actually the project i'm working on for that one, it's easier to use it like your simple main.py . The method below seems to work for me. Because for my project, I need to calculate something.. for example.. the length of recognized characters (value). Creating a global variable to hold that length is not working as i'm not calling callback() directly. Your method is better but let me know if you have any suggestion to expose the length outside of callback. I'm kinda new to python. Don't know the advanced features. Thank you.

value = r.recognize_google(audio) 
audio =0 
#do stuff... and wait using time.sleep
audio = r.listen(source) #start listening again

@Uberi
Copy link
Owner

Uberi commented Nov 16, 2015

Assuming you want the length of the recognized characters:

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
    audio = r.listen(source)
result = r.recognize_google(audio)
print("Your phrase contains {} characters".format(result))

@mrmushfiq
Copy link
Author

I see. So I have to call the recognizer outside of callback. Thank you. I really appreciate your help.

@Uberi Uberi closed this as completed Nov 18, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants