import openai import sounddevice as sd import audiofile as af from scipy.io.wavfile import write from gtts import gTTS import multiprocessing import pyttsx3 import keyboard def say(text): p = multiprocessing.Process(target=pyttsx3.speak, args=(text,)) p.start() while p.is_alive(): if keyboard.is_pressed('enter'): p.terminate() else: continue p.join() import pyaudio import wave def record_audio(filename, sec, sr=44100): p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=2, rate=sr, input=True, frames_per_buffer=1024) frames = [] for i in range(0, int(sr / 1024 * sec)): data = stream.read(1024) frames.append(data) stream.stop_stream() stream.close() p.terminate() with wave.open(filename, 'wb') as wf: wf.setnchannels(2) wf.setsampwidth(p.get_sample_size(pyaudio.paInt16)) wf.setframerate(sr) wf.writeframes(b''.join(frames)) def record_audio_manual(filename, sr = 44100): input(" ** Press enter to start recording **") audio = sd.rec(int(10 * sr), samplerate=sr, channels=2) input(" ** Press enter to stop recording **") sd.stop() write(filename, sr, audio) def play_audio(filename): signal, sr = af.read(filename) sd.play(signal, sr) def transcribe_audio(filename): audio_file= open(filename, "rb") transcript = openai.Audio.transcribe("whisper-1", audio_file) audio_file.close() return transcript def translate_audio(filename): audio_file= open(filename, "rb") translation = openai.Audio.translate("whisper-1", audio_file) audio_file.close() return translation def save_text_as_audio(text, audio_filename): myobj = gTTS(text=text, lang='en', slow=False) myobj.save(audio_filename)