如何将base64字符串直接解码为二进制音频格式

2024-05-29

音频文件通过 API 发送给我们,该文件是 Base64 编码的 PCM 格式。我需要将其转换为 PCM,然后再转换为 WAV 进行处理。

我能够使用以下代码解码 -> 保存到 pcm -> 从 pcm 读取 -> 保存为 wav。

decoded_data = base64.b64decode(data, ' /')
with open(pcmfile, 'wb') as pcm:
    pcm.write(decoded_data)
with open(pcmfile, 'rb') as pcm:
    pcmdata = pcm.read()
with wave.open(wavfile, 'wb') as wav:
    wav.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))
    wav.writeframes(pcmdata)

如果我可以将输入字符串解码为二进制并保存为 wav,那就容易多了。所以我做了这样的事情在python中将字符串转换为二进制 https://stackoverflow.com/questions/18815820/convert-string-to-binary-in-python

  decoded_data = base64.b64decode(data, ' /')
    ba = ' '.join(format(x, 'b') for x in bytearray(decoded_data))
    with wave.open(wavfile, 'wb') as wav:
        wav.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))
        wav.writeframes(ba)

但我得到了错误a bytes-like object is required, not 'str' at wav.writeframes.

也尝试过base54.decodebytes()并得到同样的错误。

这样做的正确方法是什么?


我在一个项目中也遇到了类似的问题。

我能够将 base64 字符串直接转换为 wav :

import base64
encode_string = base64.b64encode(open("audio.wav", "rb").read())
wav_file = open("temp.wav", "wb")
decode_string = base64.b64decode(encode_string)
wav_file.write(decode_string)

首先将其编码为base64。然后创建一个 wav 格式的文件并将解码后的 Base64 字符串写入该文件。

我知道这是一个很晚的答案。希望这可以帮助。

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

如何将base64字符串直接解码为二进制音频格式 的相关文章

随机推荐

  • 如何从字符串中分离字符和数字部分

    例如 我想分开 OS234 to OS and 234 AA4230 to AA and 4230 我使用了以下简单的解决方案 但我确信应该有一个更有效和更强大的解决方案 private void demo string cell ABCD
  • 使用机器人框架进行 ATDD

    我想听听其他人使用 Robot Framework 进行自动化验收测试的经验 它的主要优点和缺点是什么以及与其他框架 主要是 Fitnesse 和 Selenium 的比较 将测试的代码是实时的遗留代码 主要是 C 语言 在我撰写本文时 我
  • 如何使用r中的dplyr在特定位置插入空白行

    我想在数据框中的特定位置插入空白行 我的数据框是这样的 dat lt data frame group c rep A 1 rep B 4 rep C 2 rep D 2 group 1 A 2 B 3 B 4 B 5 B 6 C 7 C
  • 将应用程序部署到 IBM liberty Profile 时执行 CICS 请求时出错

    我有一个应用程序 如果我将它 在我的本地 部署到 WAS 中 它可以完美运行 但是 如果将其部署到 IBM J9 VM 版本 pwa6470 27sr2fp10 20141218 02 SR2 FP10 中的 Liberty Profile
  • aws log get-log-events --log-group-name 问题

    我尝试使用 aws 日志检索日志 但 aws cli 命令未正确处理日志组名称 aws logs get log events log group name aws lambda mySkillName log stream name 20
  • 所有可能的 GOOS 价值?

    如果我做对了 GOOS在编译源代码时确定 为了更好地支持多个操作系统 我感兴趣的是GOOS可能 当然 Go 是开源的 所以它可能有无限的可能性 所以我真正想要的是一个 通用列表 已知值为 windows linux darwin or fr
  • 从数组中查找三角形

    给出由 N 个整数组成的零索引数组 A 三元组 P Q R 是三角形 如果且 A P A Q gt A R A Q A R gt A P A R A P gt A Q 例如 考虑数组 A 使得 A 0 10 A 1 2 A 2 5 A 3
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • 在 python matplotlib 中用多种颜色填充多边形

    我正在使用 matplotlib 绘制多边形补丁 并希望表示每个多边形的部分以特定颜色填充 即制作一个饼图 但形状为三角形 正方形或六边形 有没有办法改变饼图的形状或表示多边形的多种填充颜色 Thanks 更新 这是我的意思的模拟 您可以创
  • 如何在 Kotlin 中的数据类上实现空对象模式?

    我有一个 Kotlin 数据类 data class PaymentAccount val accountId Int val accountNumber String val title String 这就是我在 Java 中要做的事情
  • LibGDX纹理混合与OpenGL混合功能

    在 libGdx 中 我试图创建一个成形纹理 采用完全可见的矩形纹理并将其遮罩以获得成形纹理 如下所示 在这里我在矩形上测试它 但我想在任何形状上使用它 我调查过本教程 http www learnopengles com tag addi
  • Firebase 查询双重嵌套

    鉴于 firebase 中的以下数据结构 我想运行查询来检索博客 efg 我目前不知道用户 ID Users 1234567 name Bob blogs abc zyx 7654321 name Frank blogs efg hij F
  • 从选择 onChange 调用 javascript 函数 [重复]

    这个问题在这里已经有答案了 所以我有一个简单的 HTML 选择框和一个 javascript 警报功能 我希望选择框有一个 onchange 事件来调用 javascript 警报函数 这是我到目前为止所拥有的 HTML div Type
  • Selenium:将 Internet Explorer 中的文件下载到指定文件夹,无需直接链接,无需 Windows 窗体,无需 AutoIt 或 Robot

    我经常遇到一个问题 如何在 IE 中下载文件 与 Firefox 的 Chrome 不同 您不能只指定所需的文件夹 所有文件都会下载到该文件夹 您还需要与本机 Windows 表单等进行交互 有多种选项 例如使用 AutoIt 使用键盘命令
  • 我的用户代理中的 MATM 是什么

    我的统计数据中最常用的 IE 用户代理是 Mozilla 5 0 compatible MSIE 10 0 Windows NT 6 1 WOW64 Trident 6 0 MATM Mozilla 5 0 compatible MSIE
  • 多维数组中的数组排列保留键 PHP

    这两天我一直在疯狂地尝试完成这个任务 也许你可以启发我 这是针对赛马投注排列的 每次用户玩游戏时 我都会得到一个多维数组 2 个级别 第一级包含比赛 ID 第二级包含用户为该比赛选择的马匹 它看起来像这样 play array 4 gt a
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 从服务帐户使用 Graph API 发送电子邮件

    我正在 ASP NET Core 5 C 中执行任务 需要使用 Graph API 发送电子邮件 我参考了以下文章并在 Azure 试用帐户上进行了配置 并且能够发送电子邮件 使用 NET 通过 Microsoft Graph 发送电子邮件
  • 如何将base64字符串直接解码为二进制音频格式

    音频文件通过 API 发送给我们 该文件是 Base64 编码的 PCM 格式 我需要将其转换为 PCM 然后再转换为 WAV 进行处理 我能够使用以下代码解码 gt 保存到 pcm gt 从 pcm 读取 gt 保存为 wav decod