二维图的超声化

sonip的Python项目详细描述


sonipy:一个散点图声音化包

MIT License

一个软件包,将分散的图转换成感知上一致的声音文件,用于科学研究,并使科学更容易获得。在

这个项目是由Locke Patton和{a3}开发的。单击here查看解释此项目背后动机的twitter线程。在

sonipy做什么?在

这是一个example sonification。在

我们的声音处理方法接收散点图数据并生成音频片段,将每个数据点描述为一个短的声音片段,其中y值对应于音调,x值对应于到达时间。在

sonipy setup

每个数据点都有一个对应的短音调,称为blip其中y值对应于音调,x值对应于到达时间。y值越高的数据点对应的点间距越大。在

安装

sonipy将可以从命令行安装pip,如下所示:

pip install sonipy

现在,您可以克隆存储库并自己安装:

^{pr2}$

示例简易设置

对于两个长度相同的数组(称为x和y),可以使用以下命令对它们进行声波处理:

fromsonipy.sonifyimportSonifyToolTone=SonifyTool(x,y)Tone.play()Tone.save()

扩展设置

如果您希望对声音化输入进行更精细的控制,可以按如下方式调整底层参数。有关所涉及参数的详细信息,请参阅下面的参数输入部分。在

fromsonipy.sonifyimportSonifyToolC4=261.6# Hzfrequency_args={'frequency_min':C4,'frequency_max':C4*4# 'cents_per_value' : -680,# 'value_min' : 0,# 'value_max' : 1,}duration_args={'time_total':2000,# ms# 'time_min' : 100, # ms# 'time_max' : 800, # ms}duration_scale=1./2000.# x value / time (ms)Tone=SonifyTool(x,y,frequency_args=frequency_args,duration_args=duration_args,# duration_scale = duration_scale,bliplength=0.5)Tone.play()Tone.SaveTone()

参数输入

频标参数:

所有频率参数都输入到frequency_args参数中。以下输入均被接受。在

  1. 一个最小频率及其对应的最小y值
  2. 最大频率及其对应的最大y值
  3. 音高的变化(以cents)超过y值参数的变化

时间尺度参数:

默认情况下,声音文件为2秒。时间参数只需定义一个持续时间刻度(以秒/x值为单位)即可输入。或者交替地传递duration_args字典,其中包含一些总时间、点之间的最小增量时间或点之间的最大增量时间。在

  1. 声音文件的总时间
  2. 相对于x值参数的变化,时间(以秒为单位)的变化

演示

几个Jupyter笔记本电脑演示,演示了sonipy的一些用例和示例 here。在

瞬时动力

这个代码是作为TransientZoo的一部分开发的,这是一个公民科学项目,允许参与者,包括盲人和视障人士,使用声音对超新星光曲线进行分类。在天文学中,光曲线描述了一个特定天体物理物体的亮度随时间的变化。更多信息,请参见第235届美国天文会议的twitter帖子和海报。在

特别感谢

感谢Allen Downey教授允许将thinkDSP代码托管在这个存储库中,以便于分发。没有它这项工作是不可能的。关于他的书Think DSP:Digital Signal Processing in Python的更多详细信息,请参阅他的教科书库https://github.com/AllenDowney/ThinkDSP。在

归属

如果您认为该软件包对您的研究有用,请引用我们的JOSS论文。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中在单个列表中存储多个数据库列值   java在两个spring boot应用程序之间传输大数据   如何在Java HttpsURLConnection中增加头大小限制?   聚焦Java,点击画面外的(机器人)   axis如何通过java调用NetDocuments SOAP API?   java getBundle找不到属性文件   Java EE项目中的tomcat Log4j2配置文件   java BrowserField Cookie删除   带有报警管理器的java Android上下文   java两个日期之间的时间差   java如何在Gradle中查找/删除未使用的依赖项   多@ManagedBeans代码中的java重用对象及其方法   java将jsp页面的值与数据库值空指针异常进行比较   JavaJPanel和GridBagLayout   java使用请求。servlet中的getSession()将数据获取到servlet的最佳方法?   java当我重新打开应用程序arraylist时没有存储来自volley的值