开发者社区 > ModelScope模型即服务 > 计算机视觉 > 正文

在ModelScope中,这种格式,如何转换成wav或者pcm格式?

请问下音频块是tensor([-1.5279e-02, -9.9334e-03, -5.1361e-03, ..., 1.5572e-06,
6.6388e-07, 1.1353e-06], device='cuda:0')
这种格式,如何转换成wav或者pcm格式

展开
收起
崔问问 2023-12-03 22:54:33 98 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在ModelScope中,如果你需要将音频数据从tensor格式转换为wav或pcm格式,你可以在ModelScope中,如果你需要将音频数据从tensor格式转换为wav或pcm格式,你可以使用PyTorch的torchaudio库。以下是示例代码:

    import torchaudio
    
    # 加载模型输出的音频块
    audio_block = ... # 这里是你的音频块数据,已经被转换为Tensor格式
    
    # 将音频数据转换为WAV格式
    waveform, sample_rate = torchaudio.load(audio_block)
    torchaudio.save("output.wav", waveform, sample_rate)
    
    # 将音频数据转换为PCM格式
    pcm_data = waveform.numpy()
    with open("output.pcm", "wb") as f:
        f.write(pcm_data)
    
    2023-12-04 15:12:39
    赞同 展开评论 打赏
  • 要将这种格式的音频数据转换为wav或pcm格式,你可以使用Python中的librosa库。首先,确保你已经安装了librosa库,可以使用以下命令进行安装:

    pip install librosa
    

    接下来,你可以使用以下代码将音频数据转换为wav格式:

    import librosa
    import numpy as np
    
    # 假设你的音频数据存储在变量audio_data中
    audio_data = np.array([-1.5279e-02, -9.9334e-03, -5.1361e-03, ..., 1.5572e-06, 6.6388e-07, 1.1353e-06], dtype=np.float32)
    
    # 将音频数据转换为numpy数组
    audio_data = audio_data.astype(np.float32)
    
    # 使用librosa库将音频数据转换为wav格式
    y, sr = librosa.load(audio_data, sr=None)
    
    # 保存为wav文件
    librosa.output.write_wav('output.wav', y, sr)
    

    上述代码中,我们首先将音频数据转换为numpy数组,然后使用librosa库的load函数加载音频数据并获取其采样率(sr)。最后,我们使用write_wav函数将音频数据保存为wav文件。

    如果你希望将音频数据转换为pcm格式,可以使用以下代码:

    import wave
    import struct
    
    # 假设你的音频数据存储在变量audio_data中
    audio_data = np.array([-1.5279e-02, -9.9334e-03, -5.1361e-03, ..., 1.5572e-06, 6.6388e-07, 1.1353e-06], dtype=np.float32)
    
    # 将音频数据转换为numpy数组
    audio_data = audio_data.astype(np.float32)
    
    # 打开一个空的PCM文件用于写入数据
    with wave.open('output.pcm', 'wb') as pcm_file:
        # 设置声道数、采样宽度、采样率和帧数(每个样本的字节数)
        pcm_file.setnchannels(1)  # 单声道
        pcm_file.setsampwidth(2)  # 采样宽度为2字节(16位)
        pcm_file.setframerate(44100)  # 采样率为44100Hz(CD音质)
        pcm_file.setnframes(len(audio_data))  # 根据音频数据的长度设置帧数
    
        # 将音频数据写入PCM文件
        for sample in audio_data:
            pcm_file.writeframes(struct.pack('h', int(sample * 32767)))  # 将样本值乘以32767并转换为有符号整数,然后打包为16位带符号整数(short)类型并写入文件
    

    上述代码中,我们首先将音频数据转换为numpy数组,然后使用wave模块打开一个空的PCM文件用于写入数据。接着,我们设置声道数、采样宽度、采样率和帧数,并将音频数据写入PCM文件。注意,在写入PCM文件之前,我们将样本值乘以32767并转换为有符号整数,然后打包为16位带符号整数(short)类型。这是因为PCM文件中的样本值通常是有符号整数表示的。

    2023-12-04 14:17:44
    赞同 展开评论 打赏

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

相关电子书

更多
视觉AI能力的开放现状及ModelScope实战 立即下载
ModelScope助力语音AI模型创新与应用 立即下载
低代码开发师(初级)实战教程 立即下载