计算机如何处理音频数据? [关闭]

2024-01-10

我使用过多种音频程序,例如 SDL Mixer、Audacity 等,但我想看看这些小音频玩具里面有什么。音频数据如何处理等等。我还看到了它使用的 C++ MP3 播放器的一些示例代码void*对于音频数据。

但所有这些并不能帮助我总体了解音频在计算机中的工作原理。那么有人可以向我解释(或向我介绍一些书籍)计算机如何存储和处理数字音频数据吗? (例如,如果将三角波形存储到 .wav 文件中,该波形如何存储为位模式?)


数字音频存储为一系列数字,称为样本。例子:

5、18、6、-4、-12、-3、7、14、4

如果将这些数字绘制为笛卡尔图上的点:样本值确定沿 Y 轴的位置,样本的序列号(0、1、2、3 等)确定沿 X 轴的位置。 X 轴只是一条单调递增的数轴。

现在,通过刚刚绘制的点绘制一条线。

恭喜,您刚刚渲染了数字音频的波形。 :-)

Y 轴是幅度,X 轴是时间。

“采样率”决定播放设备(例如声卡)在采样中前进的速度。这是样本的“时间价值”。例如,CD 质量的数字音频每秒遍历 44,100 个样本,读取每个样本点的幅度(Y 轴值)。

† 上面的讨论忽略了压缩。压缩对数字音频的本质变化不大。就像压缩位图图像一样,不会改变位图图像的核心性质。 (音频压缩的主题是一个丰富的主题 - 我并不是想过度简化它,只是所有压缩的音频最终在渲染之前都会被解压缩 - 也就是说,作为可听声音播放或绘制为波形 - 在从这一点来看,它的压缩起源并不重要。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机如何处理音频数据? [关闭] 的相关文章

随机推荐

  • 如何在 Mac OS 上使用 homebrew 将 postgresql 从 10.1 降级到 9.6 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的 Mac 上装有 postgresql 10 1 我的工作网站需要 9 6 才能在本地计算机上运行 找不到有关如何卸载或降级到 9 6
  • 如何解决此错误 (GWT)

    运行我的应用程序后出现此错误 编译过程中没有出现错误 另外 没有其他应用程序在运行 在端口 8888 警告 上启动 Jetty 失败 电子邮件受保护 cdn cgi l email protection 8888 java net Bind
  • 如何在java中为游戏实现双缓冲?

    因此 在我正在开发的游戏中 我有一个弹珠跟随鼠标 但当它这样做时 屏幕会闪烁 背景包括两个 jpeg 和 9 个矩形 我该如何进行双缓冲呢 这是主窗口的代码 Write a description of class Window here
  • R:分割数字字符串

    我正在尝试拆分 40 位数字的数字字符串 即拆分123456789123456789123456789 into 1 2 3 4 etc 很遗憾strsplit不起作用 因为它需要字符 并使用转换字符串as character不起作用 因为
  • Zappa/AWS - 电子邮件不会发送并且只是超时

    目前 我已经为我的交易电子邮件提供商 Postmark 尝试了普通的 Django SMTP 和一些不同的基于 api 的 Django 库 当我运行我的开发服务器时 一切都运行良好 通过 Postmark API 发送电子邮件没有任何问题
  • Get-ADPrincipalGroupMembership -Identity 不接受变量

    在几个不同的域中工作 这些域具有不同的命名模式 因此 我正在编写一个进入每个域的脚本 并检查它们的组成员身份 该脚本所做的第一件事是询问用户的姓氏 然后我用Get ADUser选择samaccountname并将其绑定到一个变量 samac
  • .NET 相当于 Java 资源包中的选择吗?

    在Java资源包中 我可能有以下资源包定义 en GB 英式英语 jobs search resultstr There 1 choice 0 are no jobs 1 is one job 1
  • 当有人点击特定链接时如何显示加载对话框?

    我确实有一个 URL 可以打开一个加载速度非常慢的网页 而且我无法控制它 我确实想在有人单击此 URL 时显示加载对话框 或者在发生这种情况时使用覆盖 div 阻止页面 注意 这与 ajax 相关的问题不是同一个问题 这是针对用户的正常 U
  • 如何在artifactory中配置更长的版本号

    我们的 jar 的版本号必须比 x x x 更长 我们宁愿需要 x x x x 来集成一些老式的自制机制 这是因为我们用 x x x 标记我们的软件 一旦我们交付给客户 就必须在此时准确地构建一个特定的 jar 以适应另一个后端 它与我们的
  • 无法将 SCSS 变量设置为 CSS 变量?

    考虑以下 SCSS color black 000000 body color color black 当用node sass编译时版本4 7 2 它会生成以下 CSS body color 000000 当我编译相同版本的SCSS时4 8
  • 如何加密用户数据,以便只有他们才能解密?

    我正在考虑创建一个 Web 应用程序 让人们输入文本 使用 SSL 连接 并且在保存到数据库之前将其加密 目标是只有用户才能解密它 您可以让用户输入密钥及其数据 并在他们想要查看数据时再次输入 而不是存储密钥 但这对用户来说会有点痛苦 但是
  • 32 位程序可以在 64 位操作系统上使用超过 4GB 的内存吗?

    在 64 位操作系统上运行的 32 位程序是否能够使用超过 4GB 的内存 如果可用 简短的回答是 是的 更长的答案取决于 硬件支持页面重新映射 这基本上为您的程序提供了一个将几个页面的窗口放入更大的内存区域的窗口 然而 该窗口应该由程序本
  • Azure 中的 SignalR 横向扩展适用于高频场景

    根据我对 Azure 中 SignalR 横向扩展的阅读 推荐的方法是使用 Azure ServiceBus 作为背板 但同时使用背板进行高频消息传递也存在限制 就限制章节而言SignalR 中的横向扩展 http www asp net
  • 了解 Java 中同步块与易失性变量的原子性、可见性和重新排序

    我试图理解volatile Java 并发实践 一书中的关键字 我比较synchronized关键字与volatile变量在三个方面 原子性 波动性和重新排序 我对此也有一些疑问 我在下面一一讨论过 1 可见性 同步 与 易变 书上说以下关
  • 从 X 射线图像中提取手骨

    我有一只手的 X 射线图像 我需要自动提取骨头 我可以使用不同的技术轻松分割手 但我需要得到骨头 而使用这些技术并没有帮助 有些骨头比其他骨头更亮 所以如果我使用阈值 其中一些骨头会消失 而另一些骨头会随着阈值上升而变得更清晰 我想也许我应
  • bookdown 错误“CTeX 字体集‘mac’在当前模式下不可用。”使用输出格式 pdf_book 和 pdf_document2 时

    我正在使用 bookdown RStudio tinyTex and pandoc用中文写一份报告 因为我需要使用交叉引用 所以我必须将输出格式设置为 pdf document2 但我有一个问题CTeX fontest 首先 这是 YAML
  • 在 Selenium Python 中执行鼠标操作

    我有以下脚本 from selenium import webdriver from selenium webdriver common by import By from selenium webdriver support ui imp
  • 仅当验证失败时,输入字段才会保留以前的值

    我想到了一个奇怪的问题 我试图隔离问题 因此以下是我的简化代码 public class MyBean private List
  • 如何根据pandas中的列合并两个数据框[重复]

    这个问题在这里已经有答案了 我有两个数据框 df1 pd DataFrame Req Req 1 Req 2 Req 3 Count 1 2 1 Req Count 0 Req 1 1 1 Req 2 2 2 Req 3 1 df2 pd
  • 计算机如何处理音频数据? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用过多种音频程序 例如 SDL Mixer Audacity 等 但我想看看这些小音频玩具里面有什么 音频数据如何处理等等 我还看到了