首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何确定C#中.wav文件的长度(即持续时间)?

要确定C#中.wav文件的长度(即持续时间),可以使用以下方法:

  1. 读取.wav文件的元数据
  2. 计算音频文件的采样率和采样位数
  3. 使用采样率和采样位数计算音频文件的长度

以下是一个简单的C#代码示例,用于确定.wav文件的长度:

代码语言:csharp
复制
using System;
using System.IO;

public static TimeSpan GetWavFileDuration(string fileName)
{
    using (var fileStream = File.OpenRead(fileName))
    {
        using (var binaryReader = new BinaryReader(fileStream))
        {
            // 跳过RIFF标签
            binaryReader.ReadBytes(4);

            // 跳过文件大小
            binaryReader.ReadBytes(4);

            // 跳过WAVE标签
            binaryReader.ReadBytes(4);

            // 跳过fmt标签
            binaryReader.ReadBytes(4);

            // 读取数据大小
            int dataSize = binaryReader.ReadInt32();

            // 跳过其他格式信息
            binaryReader.ReadBytes(16);

            // 读取采样率
            int sampleRate = binaryReader.ReadInt32();

            // 跳过其他信息
            binaryReader.ReadBytes(6);

            // 读取采样位数
            short bitsPerSample = binaryReader.ReadInt16();

            // 计算音频长度
            double duration = (double)dataSize / (sampleRate * bitsPerSample / 8);

            return TimeSpan.FromSeconds(duration);
        }
    }
}

使用此方法,可以轻松地确定.wav文件的长度。请注意,此示例仅适用于无损的.wav文件,并且假定.wav文件的格式正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何C# 以编程方式将 CSV 转为 Excel XLSX 文件

前言 Microsoft ExcelXLSX格式以及基于文本CSV(逗号分隔值)格式,是数据交换中常见文件格式。应用程序通过实现对这些格式读写支持,可以显著提升性能。...在本文中,小编将为大家介绍如何在Java以编程方式将【比特币-美元】市场数据CSV文件转化为XLSX 文件。...创建项目 (1)使用 Visual Studio 2022,创建一个新项目 ( CTRL+SHIFT+N ) 并 在下拉列表 选择 C#、 所有平台和 WebAPI ,以快速找到项目类型ASP.NET...5)返回XLSX 最后,创建一个Main类,并添加相关方法作为整个程序入口,右键执行程序后就可以获得最终Excel XLSX文件。...以编程方式将 CSV 转为 Excel XLSX 文件全过程,如果您想了解更多信息,欢迎点击这篇参考资料访问。

20210

Matlab读取和写入音频文件

最近在做音视频开发,正好分享一点简单matlab 音频处理 写入音频文件文件 handel.mat 加载示例数据 load handel.mat 工作区现在包含音频数据矩阵 y 和采样率 Fs。...使用 audiowrite 函数将数据写入当前文件名为 handel.wav WAVE 文件。...获取有关音频文件信息 使用 audioinfo 函数获取有关 WAVE 文件 handel.wav 信息。...SampleRate 字段指示音频数据采样率,以赫兹为单位。Duration 字段指示文件持续时间,以秒为单位。 读取音频文件 使用 audioread 函数读取文件 handel.wav。...sound(y,Fs) 也可以交互方式读取 WAV、AU 或 SND 文件。选择 导入数据或双击当前文件夹浏览器文件名。 绘制音频数据图 创建一个与 y 长度相同向量 t,表示经过时间。

3.5K21
  • 语音深度鉴伪识别项目实战:基于深度学习语音深度鉴伪识别算法模型(一)音频数据编码与预处理

    也就是我们第一部要了解声音是如何转换为数据,是如何编码保存。一、音频数据编码音频数据编码和解码是将声音信号转换为数字信号以及将数字信号还原为声音信号过程。...人耳能够听到频率范围通常在20 Hz到20 kHz之间。持续时间(Duration)持续时间是指音频信号总时长,通常以秒(s)为单位。持续时间决定了音频文件长度。...较长持续时间会产生更大数据量。单声道和立体声(Channels)单声道(Mono):单声道音频只有一个声道,所有的声音都来自一个方向,音频文件较小,常用于电话通信和某些广播应用。...查看一个WAV文件数据特征,可以通过读取文件元数据和音频数据,了解其采样率、声道数、采样位宽、持续时间等信息。可以使用Pythonwave库和librosa库来读取WAV文件,并查看其数据特征。...下面我将用soundfile读取WAV文件并保存为FLAC文件:import soundfile as sf# 读取WAV文件data, samplerate = sf.read('sine_wave.wav

    31873

    Python爬虫有用库:pydub,处理音视频

    ffmpeg文章,可以参考一下: python库ffmpeg错误解决方法 常用一些用法 1、打开音频文件 第一种方法: from pydub import AudioSegment wav_version...= AudioSegment.from_wav("文件路径.wav") mp3_version = AudioSegment.from_mp3("文件路径.mp3") ogg_version = AudioSegment.from_ogg...==pydub做任何操作时间尺度都是毫秒级== ①、对音频段进行接片 from pydub import AudioSegment # 读取一个mp3文件 song = AudioSegment.from_mp3...("文件路径.mp3") # 2秒淡入3秒淡出 result = song.fade_in(2000).fade_out(3000) ④、获取音频长度、响度、声道数、取样数、帧速率、采样率、帧数 from...(duration=1000) ⑧、创建一个持续时间为0AudioSegment对象 empty = AudioSegment.empty() 可以用于将许多音频集合在一起循环 # 存放三个音频文件

    1.6K10

    Python 还能播放音频,而且花样多多?

    阅读本文大概需要3.3分钟 播放音频文件 下面,您将看到如何使用所选Python库来播放音频文件。其中一些库允 许您播放一系列音频格式,包括MP3和NumPy数组。...playsound:如果您只想播放WAV或MP3文件,可以使用最简单软件包。它只提供简单回放功能。...sa frequency = 440 # 我们播放音符是440赫兹 fs = 44100 # 每秒4100个样本 seconds = 3 # 注意持续时间为3秒 # *sample_rate...接下来,我们将学习如何使用pydub播放声音。它允许播放范围广泛音频文件,并且提供了比使用音频更多选项。...(稍后将详细介绍),切片音频,计算音频文件长度,淡入或退出,并应用交叉衰减。

    3.6K10

    Python 播放音频文件

    播放音频文件 下面,您将看到如何使用所选Python库来播放音频文件。其中一些库允 许您播放一系列音频格式,包括MP3和NumPy数组。...sa frequency = 440 # 我们播放音符是440赫兹fs = 44100 # 每秒4100个样本seconds = 3 # 注意持续时间为3秒 # *sample_rate步骤,范围在...接下来,我们将学习如何使用pydub播放声音。它允许播放范围广泛音频文件,并且提供了比使用音频更多选项。...(稍后将详细介绍),切片音频,计算音频文件长度,淡入或退出,并应用交叉衰减。...推荐阅读 Python 年度文章汇总 一篇让你直接入门 Python 教程 Pythno浅拷贝与深拷贝  关注我公众号 【Python 知识大全】

    6.8K30

    C# 10分钟完成百度语音技术(语音识别与合成)——入门篇

    我们现在就基于百度Ai开放平台进行语音技术相关操作,demo使用C#控制台应用程序。...然后引入百度Baidu.AI动态链接库,步骤如下,小编使用2017,所以直接在NuGet搜索Baidu.AI安装即可。 安装语音识别 C# SDK C# SDK 现已开源!...安装 1.在官方网站下载C# SDK压缩工具包。 2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 添加为引用。...16k 采样率pcm文件样例下载 16k 采样率wav文件样例下载 16k 采样率amr文件样例下载 音频文件格式转换请参见文档【语音识别小工具\音频文件转码】 更多内容详见官网:https://ai.baidu.com.../docs#/ASR-API/top ---- 语音合成:   合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求方式。

    4.1K21

    史上全最WAV格式详解

    WAV   以最简单无损WAV格式文件为例,此时文件音频数据部分为PCM,比较简单,重点在于WAV头部。一个典型WAV文件头部长度为44字节,包含了采样率,通道数,位深等信息,如下表所示。...从0x08开始一直到文件末尾, 都是ID为"RIFF"块内容, 其中会包含两个子块,"fmt "和"data"0x08-0x0B4字符大端类型码(Form Type),WAV文件格式标记 ,"WAVE...这是因为根据WAV规范,其头部还支持携带附加信息,所以只按照44个字节长度去解析WAV头部信息是不一定正确,还需要考虑附加信息。那么如何知道一个WAV文件头部是否包含附加信息呢?   ...如果fmt SubChunk Size等于0x10(16),表示头部不包含附加信息,WAV头部信息长度为44;如果等于0x12(18),则包含附加信息,此时头部信息长度大于44。   ...文件头部包含了附加信息,那么PCM音频所在位置就不确定了,但由于附加信息也是一个子块(SubChunk),根据RIFF规范,该子块也必然记录着其长度信息,所以我们还是有办法能够动态计算出其位置,下面是计算步骤

    4.2K10

    Transformers 4.37 中文文档(七十九)

    可以通过将.flac或.wav音频文件加载到List[float]类型数组或numpy.ndarray获得。...由于持续时间预测器随机性质,该模型是非确定,因此需要一个固定种子来生成相同语音波形。...我们还提出了一个随机持续时间预测器,用于从输入文本合成具有不同节奏语音。通过对潜在变量进行不确定性建模和随机持续时间预测器,我们方法表达了自然一对多关系,文本输入可以以不同音高和节奏发音。...Wav2Vec2ForCTC 受到一篇关于如何在英语微调语音识别模型笔记本和如何在任何语言中微调语音识别模型笔记本支持。...False 或 'do_not_pad'(默认):不填充(,可以输出长度不同序列批次)。

    21810

    libzplay库

    libzplay目前,非开源,只可以在windows上应用; 关于MP3文件播放:通常步骤是:获取MP3相关参数 -> 解码-> 相关平台播放音频接口播放声音; 可以播放解码播放MP3库很多,如果VLC...,下到说应用说明文档较少,函数注释较少,有些功能靠猜,不过可以通过测试确定,但是功能还是比较强大,工程示例代码较多; 一: libzplay除了可以播放MP3,还可以播放WAV,PCM等音频文件...,从其枚举值可以看到播放支持类型: This is multimedia library for playing mp3, mp2, mp1, ogg, flac, oga, ac3, aac,...关于streams播放,可以参考dynamic_stream示例,示例是获取MP3格式,但是也可以通过接口自定义设置格式; enum TStreamFormat { sfUnknown =...但是,在示例代码没有看到示例程序,也没有看到说明文档; 不过可以根据:MsgWaveBuffer猜测,应该是支持数据获取;所以这里示例首先参考回调函数设置示例,然后设置数据获取; enum TCallbackMessage

    96920

    C#如何遍历某个文件所有子文件和子文件夹(循环递归遍历多层),得到所有的文件名,存储在数组列表

    D:\\test"; List nameList = new List(); Director(path,nameList); 响应(调用)代码如上面,比如写在某个事件。...首先是有一个已知路径,现在要遍历该路径下所有文件文件夹,因此定义了一个列表,用于存放遍历到文件名。...DirectoryInfo[] directs = d.GetDirectories();//文件夹 foreach (FileInfo f in files) {...list.Add(f.Name);//添加文件名到列表 } //获取子文件夹内文件列表,递归遍历 foreach (DirectoryInfo...dd in directs) { Director(dd.FullName, list); } } 这样就得到了一个列表,其中存储了所有的文件名,如果要对某一个文件进行操作

    14K40

    【音频处理】WAV 文件格式分析 ( 逐个字节解析文件头 | 相关字段计算公式 )

    文章目录 一、WAV 文件格式 一、WAV 文件格式 ---- 这是纯 PCM 样本二进制内容 : 开始部分都是 00 方便阅读 ; 这是使用 Adobe Audition 将上述 PCM...音频数据转为 WAV 格式后音频数据二进制信息 : WAV 文件格式分析 : WAV 文件是在 PCM 纯音频样本数据基础上添加了 44 字节文件头 ; 52 49 46 46 A8 BD 1F...( RIFF ) , 52 49 46 46 , 固定写法 ; 04 ~ 07 : 从下个地址 ( 08 ) 开始到 WAV 文件结尾总字节数 , A8 BD 1F 00 , 整个 WAV 文件大小就是该数值...通道数 , 02 00 , 1 表示单声道 , 2 表示立体声 ; 24 ~ 27 : 采样频率 , 80 BB 00 00 , 48000 Hz ; 28 ~ 31 : 波形数据传输速率 , 每秒字节数... ASCII 码值 ; 这里注意该 WAV 文件在 36 ~ 37 位置插入了两个无意义 00 字节 , 目前不清楚含义 , 暂时不用管 ; 40 ~ 43 : PCM 数据总长度, 单位

    3K10

    提取音频的人声: 简明指南

    本文将深入探讨利用先进Silero Voice Activity Detector (VAD)模型,如何实现从音频文件获得清晰人声片段目标,进而揭示这一技术在实际应用巨大潜力。...在本例,设置长度为600ms。为了提高模型识别准确率,我们将原有的音频数据切割成连续、定长帧。...输出和保存:最后,筛选和合并后的人声片段将被保存为新WAV文件,每个文件包含一个单独说话片段,便于后续处理或分析。...文件audio_file.wav抽取出说话语音片段,存储在当前目录下output_folder目录:python3 detect_voice.py <output_folder...通过本文讨论与案例展示,我们不仅理解了如何有效地从复杂音频中提取人声说话片段技术细节,而且可见利用这一技术在多样化应用场景巨大潜力。

    1.1K10

    深入探索AI文生语音技术奥秘:从文本输入到逼真语音输出全链条语音合成过程解析

    自回归模型核心思想是:今天股票价格可能与昨天、前天甚至更早价格有关。这个模型会尝试找出这种时间上联系,确定它们之间关系强度,并用这种关系来预测下一个时间点价格。...根据上文中分析可以发现,从文本到语音合成会面对三个问题: 长度差异大,语音信号长度是文本序列上千倍,难以跨越这么大长度差异,直接从文本合成语音; 模态差异大,主要是信息含量不同,文本只包含语义信息...,决定合成出语音是否符合输入文本,此外,语音情感、韵律等也现象也主要与声学模型有关。...中间表征离散化 3.1. 语音预训练离散化 3.1.1. Wav2vec2.0 Wav2Vec 2.0 利用原始音频波形直接学习有用特征表示,并且在训练不依赖于标注数据。...Wav2Vec 2.0 模型关键特点包括: Wav2vec2.0 训练任务是 mask 帧特征预测,训练目标基于对比学习,mask 帧真实特征为正例,相邻帧特征为负例; 对比损失:Wav2Vec

    15110

    实战详细讲解ffmpeg命令使用(来自一线经验,视频合并&avi转MP4&补空白音频【收藏下来一定用到】)

    |全局 | | | -i 地址|输入文件地址 |输入 | | | -y |覆盖输出文件当output.mp4存在时,不经提示覆盖该文件 |全局 | | | -i | 指定输入文件地址,如果跟ffmpeg...| | -t| 持续时间 |输入/输出,当用作输入选项时,限制从输入文件读取数据持续时间。当用作输出选项时(在输出url之前),在其持续时间达到duration后停止写入输出。...duration必须是持续时间 |-t 20 (持续20秒) | | -fs limit_size| 是指文件大小限制,以字节为单位。超出限制后不会再写入更多字节块。...|输出 || | -ss位置| 当用作输入选项时,在输入文件寻找位置,多用于视频剪切 |输入/输出 |-ss 15 (从第15秒开始)| | -ss位置| 当用作输入选项时,在输入文件寻找位置,多用于视频剪切...对于输出流,它默认设置为输入音频通道数量 输入/输出,每个流 -ac 2 (声道数设置为2) -an 作为输入选项,阻止文件所有音频流被过滤或自动选择或映射到任何输出,作为输出选项,禁用音频记录,任何音频流自动选择或映射

    22K41

    【FFmpeg】ffmpeg 命令行参数 ① ( ffpeg 命令 -i 参数 指定 输入文件 输入流 | ffpeg 命令 -f 参数 指定 输出格式 | 指定 时间 相关参数 )

    文件名后缀 自动判定文件格式 ; 1、-f 参数 说明 ffpeg 命令 -f 参数 用于 指定 输入或输出格式 , 应该如何 解释输入数据 , 或者应该如何 封装输出数据 ; 当指定输入文件时...-f mkv : 表示 输入或输出 文件格式是 mkv 格式 ; -f wav : 表示 输入或输出 文件格式是 wav 格式 ; -f rawvideo : 表示 原始视频 数据流格式 , 通常用于一些专业音视频处理...-t 参数 ffmpeg 命令 使用 -t duration 参数 , 可以 设置 输出 文件 视频长度 , duration 指的是播放时间 , 单位是 秒 ; 从 输入文件 裁剪出特定长度音频或视频片段时...10 秒视频 进行处理 , 使用 -ss 设置 输入文件起始时间 使用 -t 参数 设置 播放持续时间 注意 : -t 参数指定时间长度是从 -ss 参数指定开始时间点计算 ; 如果没有指定 -... 第 30 秒开始 10 秒视频 , 输出到 output.mp4 文件 ; 输入文件信息 : 输出文件信息 :

    2.6K10

    Android 音频PCM数据采集和播放,读写音频wav文件

    PCM表示是音频文件随着时间流逝一段音频振幅。Android在WAV文件中支持PCM音频数据。 WAV WAV,MP3等比较常见音频格式,不同编码格式对应不通过原始音频。...为了辨别出音频格式,每种格式有特定文件(header)。 WAV以RIFF为标准。RIFF是一种资源交换档案标准。RIFF将文件存储在每一个标记块。...PCM打包成WAV PCM是原始音频数据,WAV是windows中常见音频格式,只是在pcm数据添加了一个文件头。...28H 4byte Wav文件实际音频数据所占大小,这里是001437C8H1325000,再加上2CH就正好是1325044,整个文件大小。...获取wav文件 若要获得wav文件,需要在PCM基础上增加一个header。可以将PCM文件转换成wav,这里提供一种PCM与wav几乎同时生成思路。

    3.3K30

    当环境变量配置文件,由很多同名命令;我们如何配置环境变量,来确定执行哪个命令呢?

    假如当前存在问题是: /bin/bazel 存在命令版本为 0.18.0  /home/yaoxu/bin/bazel 存在命令版本为 0.10.0  我们应该如何配置环境变量,来确定执行哪个版本呢...通过我实验,环境变量是逐层覆盖,越在后面的环境变量优先级越高;如果系统默认是 0.18.0 版本命令; 我们本地又新安装了一个版本,为了默认使用我们自己版本。...我觉得具体策略还是,进行尝试为好;) export PATH=/home/y/cmake-3.15.4-Linux-x86_64/bin:$PATH 使用上述方法,我们既可以解决问题;为了每次bash打开时候都执行...,我们可以使用把上述命令写入到.bashrc ; 本文章描述问题,在多用户使用高性能计算环境,或者多用户linux GPU 主机上,经常会出现; 保持更新,转载请注明出处;更多内容,请关注

    1.7K20
    领券