小编Ty *_*man的帖子

如何在 python 中录制不确定持续时间的音频并允许暂停和恢复功能?

我正在编写一个Python应用程序来将音频录制为WAV文件,直到用户按下暂停停止。暂停音频后,用户还应该能够恢复录制。此外:

  • 应用程序无法预先知道录音会持续多长时间
  • 应用程序应避免内存不足(因为录制可能会很长)。例如,它可以实时写入 WAV 文件,以防止将不断增长的录音存储在内存中。

解决这个问题的好方法是什么?您能为您的解决方案提供一些代码片段吗?

使用python-sounddevice,我可以stop()通过start()流来模仿“暂停”功能。我可以指定一个 numpy 数组作为记录的输出。但:

  • 我不知道要制作多大的数组(因为我不知道录制持续时间)
  • 当数组填满时我该怎么办?

python-sounddevice 和 sound-file可以支持在事先不知道大小的情况下进行录音。但:

  • 我如何合并“暂停”和“恢复”功能?声音文件只有readwrite方法。
  • 有没有比使用更好的方法来停止流KeyBoardInterrupt
  • 我可以在每次“暂停”后创建不同的录音,并在用户单击“停止”后合并 WAV 文件吗?
  • 我尝试使用Threading.Event()阻止录制线程来模拟暂停功能,但录制不断写入文件

我的sound-device尝试

paused = False

def record():
    self.recording = ? # create numpy.ndarray of the correct size 
                       # (not sure the best way to do this without 
                       # knowing the recording duration)
    with sd.InputStream(samplerate=44100, device=mic, channels=1, 
        callback=self.callback): …
Run Code Online (Sandbox Code Playgroud)

python audio audio-recording python-3.x python-sounddevice

5
推荐指数
1
解决办法
7173
查看次数

在只读模式下使用OpenPyXL获取Excel工作表的列名称

我该如何找回

  1. openpyxl 只读 工作表中的列名(第一行中单元格的值)?
    • CityPopulationCountry在下面的示例表
  2. openpyxl只读工作簿中的所有列名称?
    • CityPopulationCountry,从表1帧和其他列名从所有其他工作表

Excel工作表示例:

| City       | Population  |    Country   |
| -----------|------------ | ------------ |
| Madison    |   252,551   |     USA      |
| Bengaluru  | 10,178,000  |    India     |
| ...        |       ...   |     ...      |
Run Code Online (Sandbox Code Playgroud)

示例代码:

from openpyxl import load_workbook

wb = load_workbook(filename=large_file.xlsx, read_only=True)
sheet = wb.worksheets[0]

... (not sure where to go from here)
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我必须使用只读,因为Excel文件有超过一百万行(不要问)
  • 我想要列名称,以便最终推断出列类型并将excel数据导入PostgreSQL数据库

python excel openpyxl

2
推荐指数
3
解决办法
8152
查看次数