You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor项目如何直接播放生成的double[]音频数据无需依赖音频文件

Blazor 直接播放原始音频数组实现方案

完全可以实现你的需求,你可以依托成熟的Blazor Web Audio封装库,几乎不需要编写JavaScript代码,核心逻辑全部在C#侧完成。

实现步骤

  • 首先安装NuGet包 Blazor.WebAudio,该包是对浏览器原生Web Audio API的C#封装,已经内置了JS互操作逻辑,不需要你自行开发JS代码
  • 在项目的Program.cs中注册音频服务:
builder.Services.AddWebAudio();
  • 在需要播放音频的Blazor组件中注入服务,编写播放逻辑,你已经生成好的double[](取值范围-1.0~1.0)可以直接传入使用:
@inject IWebAudioProvider AudioProvider

@code {
    // 你的音频采样率,和生成粉噪声时使用的采样率保持一致即可,比如44100Hz
    private const int SampleRate = 44100;

    private async Task PlayAudio(double[] audioData)
    {
        // 创建音频上下文
        using var audioContext = await AudioProvider.CreateAsync();
        // 创建音频缓冲区,单声道
        var audioBuffer = await audioContext.CreateBufferAsync(1, audioData.Length, SampleRate);
        // 将你的音频数组拷贝到缓冲区
        await audioBuffer.CopyToChannelAsync(audioData, 0);
        // 创建缓冲区源节点
        var sourceNode = await audioContext.CreateBufferSourceAsync();
        // 绑定音频数据
        sourceNode.Buffer = audioBuffer;
        // 连接到音频输出
        await sourceNode.ConnectAsync(audioContext.Destination);
        // 开始播放
        await sourceNode.StartAsync();
    }
}
  • 你需要的滤波处理逻辑完全可以在C#侧调用原生DLL处理完成后,再把最终的double[]传给上述播放方法即可,全程不需要涉及JavaScript开发。

注意事项

浏览器出于用户体验限制,音频播放必须由用户交互事件触发,你只需要将播放逻辑绑定到按钮点击等用户主动触发的事件中即可,不需要额外编写JS代码适配。


内容的提问来源于stack exchange,提问作者Erik Thysell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:24:02