Spaces:
Sleeping
Sleeping
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) |