ding, logger

This commit is contained in:
wassname
2019-01-12 11:12:11 +08:00
parent 21b06db316
commit a67bc9531d
5 changed files with 88 additions and 73 deletions
+35 -23
View File
@@ -23,7 +23,7 @@ import hashlib
import tempfile
from logger import logger
from snowboydecoder import play_audio_file
from snowboydecoder import play_ding, play_dong
import speech_recognition as sr ## Packages for voice recognizer
for index, name in enumerate(sr.Microphone.list_microphone_names()):
@@ -42,11 +42,11 @@ except:
def play_mp3(mp3_file):
"""Play mp3 file with pyglet."""
# FIXME (wassname) It currently plays in background but we want to wait untill it's finished
source = pyglet.media.load(filename=mp3_file, streaming=False)
source.play()
time.sleep(source.duration*2 + 2) # TODO must be a better way to wait untill the media has played
print(mp3_file, source.duration)
time.sleep(source.duration + 4) # must be a better way to wait untill the media has played
print(mp3_file, source.duration)
def cache_gtts(text, lang="en-nz", cache_file=None):
"""
@@ -71,7 +71,7 @@ def cache_gtts(text, lang="en-nz", cache_file=None):
en: English
"""
print('say:', text)
logger.debug('say: %s', text)
if not cache_file:
hash_filename = hashlib.md5(text.encode()).hexdigest() + '.mp3'
cache_file = os.path.join(tempfile.gettempdir(), hash_filename)
@@ -85,49 +85,61 @@ def generate_poem():
############ AUDIO CONVERSION TO TEST
play_audio_file()
play_dong()
t0 = time.time()
r = sr.Recognizer()
with sr.Microphone() as source:
outfile1 = cache_gtts(text="Hi! My Name is BIT-LIT. PLEASE SPEAK SOME IDEAS FOR A POEM between the beeps.")
# print(r.energy_threshold)
# r.adjust_for_ambient_noise(source)
# print('energy_threshold', r.energy_threshold)
r.energy_threshold=50
print('mic', source)
outfile1 = cache_gtts(text="Hi! My Name is BIT-LIT. PLEASE SPEAK SOME IDEAS FOR A POEM AFTER THE BEEP.")
play_mp3(outfile1)
play_ding()
play_audio_file()
print('speak now', time.time())
audio = r.listen(source)
logger.debug('done recording %s', time.time())
logger.info('recorded %s s', len(audio.frame_data)/audio.sample_rate)
audio = r.listen(source, phrase_time_limit=20)
play_audio_file()
outfile2 = cache_gtts(text="BEEP. THANK YOU! GIVE ME A MINUTE TO GENERATE AND READ YOUR POEM. BEEP")
play_dong()
outfile2 = cache_gtts(text="BEEP. THANK YOU! GIVE ME A MINUTE TO GENERATE AND READ YOUR POEM")
play_mp3(outfile2)
t1 = time.time()
print('listen took', t1 - t0)
logger.debug('listen took %s', t1 - t0)
try:
print("using google speech to text...")
logger.debug("using google speech to text...")
USER_INPUT = r.recognize_google_cloud(audio, credentials_json=GOOGLE_CLOUD_SPEECH_CREDENTIALS)
print("Google thinks you said: " + USER_INPUT)
logger.info("Google thinks you said: " + USER_INPUT)
except sr.UnknownValueError as e:
print("Could not understand audio. {}".format(e))
logger.error("Could not understand audio. {}".format(e))
return
except sr.RequestError as e:
print("Could not request results; {0}".format(e))
logger.error("Could not request results; {0}".format(e))
return
t1b = time.time()
print('transcribe took', t1b - t1)
logger.debug('transcribe took %s', t1b - t1)
return
# Generate poem from user seed
text_generated = poem(USER_INPUT)
t2 = time.time()
logger.info("ML POEM is: %s", text_generated)
logger.info('poem and rhyme generation took %s', t2 - t1)
logger.debug('poem and rhyme generation took %s', t2 - t1)
# TEXT CONVERSION IN AUDIO
# FEED POEM TO TRANSCRIBER
tts = gTTS(text=text_generated)
# ts = datetime.datetime.utcnow().strftime('%Y%m%d_%H-%M-%S')
poem_mp3 = "outputs/BitLit_poem.mp3"#.format(ts)
ts = datetime.datetime.utcnow().strftime('%Y%m%d_%H-%M-%S')
poem_mp3 = "outputs/BitLit_{}.mp3".format(ts)
tts.save(poem_mp3)
play_mp3(poem_mp3)
@@ -136,8 +148,8 @@ def generate_poem():
######
t3 = time.time()
logger.info('Poem to speech took %s', t3 - t2)
logger.info("Time spent is about: %s seconds")
logger.debug('Poem to speech took %s', t3 - t2)
logger.debug("Total time spent is about: %s seconds", np.round(t3 - t0))
if __name__ == "__main__":