anki/aqt/sound.py

51 lines
1.4 KiB
Python
Raw Normal View History

2019-02-05 04:59:03 +01:00
# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from aqt.qt import *
import time
2012-12-22 01:17:10 +01:00
from anki.sound import Recorder
2019-02-13 00:36:39 +01:00
from aqt.utils import saveGeom, restoreGeom, showWarning
2019-03-04 02:58:34 +01:00
from anki.lang import _
2019-02-13 00:36:39 +01:00
if not Recorder:
print("pyaudio not installed")
def getAudio(parent, encode=True):
"Record and return filename"
# record first
2019-02-13 00:36:39 +01:00
if not Recorder:
showWarning("pyaudio not installed")
return
r = Recorder()
mb = QMessageBox(parent)
restoreGeom(mb, "audioRecorder")
mb.setWindowTitle("Anki")
2017-08-28 13:46:22 +02:00
mb.setIconPixmap(QPixmap(":/icons/media-record.png"))
2017-06-23 05:04:32 +02:00
but = QPushButton(_("Save"))
mb.addButton(but, QMessageBox.AcceptRole)
but = QPushButton(_("Cancel"))
mb.addButton(but, QMessageBox.RejectRole)
2017-06-23 05:04:32 +02:00
mb.setEscapeButton(but)
t = time.time()
r.start()
time.sleep(r.startupDelay)
QApplication.instance().processEvents()
while not mb.clickedButton():
txt =_("Recording...<br>Time: %0.1f")
mb.setText(txt % (time.time() - t))
mb.show()
QApplication.instance().processEvents()
2017-06-23 05:04:32 +02:00
if mb.clickedButton() == mb.escapeButton():
r.stop()
return
saveGeom(mb, "audioRecorder")
# ensure at least a second captured
while time.time() - t < 1:
time.sleep(0.1)
r.stop()
# process
r.postprocess(encode)
return r.file()