test_linuxaudiodev.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 90 行

PY
90
字号
from test_support import verbose, findfile, TestFailed, TestSkippedimport errnoimport fcntlimport linuxaudiodevimport osimport sysimport selectimport sunaudioimport timeimport audioopSND_FORMAT_MULAW_8 = 1def play_sound_file(path):    fp = open(path, 'r')    size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)    data = fp.read()    fp.close()    if enc != SND_FORMAT_MULAW_8:        print "Expect .au file with 8-bit mu-law samples"        return    try:        a = linuxaudiodev.open('w')    except linuxaudiodev.error, msg:        if msg[0] in (errno.EACCES, errno.ENODEV, errno.EBUSY):            raise TestSkipped, msg        raise TestFailed, msg    # convert the data to 16-bit signed    data = audioop.ulaw2lin(data, 2)    # set the data format    if sys.byteorder == 'little':        fmt = linuxaudiodev.AFMT_S16_LE    else:        fmt = linuxaudiodev.AFMT_S16_BE    # at least check that these methods can be invoked    a.bufsize()    a.obufcount()    a.obuffree()    a.getptr()    a.fileno()    # set parameters based on .au file headers    a.setparameters(rate, 16, nchannels, fmt)    a.write(data)    a.flush()    a.close()def test_errors():    a = linuxaudiodev.open("w")    size = 8    fmt = linuxaudiodev.AFMT_U8    rate = 8000    nchannels = 1    try:        a.setparameters(-1, size, nchannels, fmt)    except ValueError, msg:        print msg    try:        a.setparameters(rate, -2, nchannels, fmt)    except ValueError, msg:        print msg    try:        a.setparameters(rate, size, 3, fmt)    except ValueError, msg:        print msg    try:        a.setparameters(rate, size, nchannels, 177)    except ValueError, msg:        print msg    try:        a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)    except ValueError, msg:        print msg    try:        a.setparameters(rate, 16, nchannels, fmt)    except ValueError, msg:        print msgdef test():    play_sound_file(findfile('audiotest.au'))    test_errors()test()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?