怎么将8位的WAV声音文件转换为16位?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么将8位的WAV声音文件转换为16位?相关的知识,希望对你有一定的参考价值。

怎么将8位的WAV声音文件转换为16位?求转换软件或简洁可行的操作方法。
没多少分了,都给了。

系统自带的录音机 开始--程序--附件--娱乐

先打开 原wav文件 然后文件菜单--另存 在弹出对话框下面 更改--格式选PCM 属性里即可改参数
参考技术A 千千静听 音乐播放器

可以实现你需要的帮助,,
软件转换设置为:--
参考技术B 任何可用的音频软件打开它然后另存为就可以了。 参考技术C 超级解霸原来有这个工具。你可以搜索以下音频制作工具,在华军软件。在我的网站上有链接。

如何将声音字节转换为可以在变量中访问的 .wav 文件?

【中文标题】如何将声音字节转换为可以在变量中访问的 .wav 文件?【英文标题】:How do I convert the soundbytes to a .wav file that I can access in a variable? 【发布时间】:2021-01-01 22:00:03 【问题描述】:

我正在从录制的音频样本中读取字节。我想将帧变量中的字节转换为 .wav 文件,我想将其存储在变量中,这样我就可以访问它而不将其存储在文件中。下面的代码只是将记录的数据存储到一个名为 frames 的变量中。

from playsound import playsound
from random import randrange
import pyttsx3
from datetime import datetime
import pyaudio
import speech_recognition as sr
import requests
import wave
import numpy as np
import sounddevice as sd
import math
import time
import os
import struct
def voiceDetection():
   SoundThreshHold = 50
   TimeoutLength = 5 
   chunk = 1024 
   FORMAT = pyaudio.paInt16 
   CHANNELS = 2 
   RATE = 16000 
   def rms(data): 
      count = len(data)/2
      format = "%dh"%(count)
      shorts = struct.unpack( format, data )
      sum_squares = 0.0
      for sample in shorts:
          n = sample * (1.0/32768)
          sum_squares += n*n
      return math.sqrt( sum_squares / count)*1000
   p = pyaudio.PyAudio()
   stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=chunk)
   currentTime = time.time()
   end = time.time() + TimeoutLength
   frames = []
   while currentTime < end:
      currentTime = time.time()
      data = stream.read(chunk)
      if rms(data) >= SoundThreshHold:
         end = time.time() + TimeoutLength
         frames.append(data)      
   stream.stop_stream()
   stream.close()
   p.terminate()
   return frames
print(voiceDetection())    

不胜感激。新年快乐!

【问题讨论】:

【参考方案1】:

Python 对此BytesIO 有一个通用机制。

BytesIO 允许您创建一个内存文件流,您可以像文件系统上的文件一样对其进行读写。

如果您只想将数据作为数组获取,this question has a solution

一般来说,当您在 Python 中处理声音/数字数据时,您需要了解如何将数据放入 NumPy 数组中以便对其进行处理。大多数库/工具包都可以使用 NumPy 数组。

【讨论】:

好的,这听起来不错,但是请您告诉我您将如何做并解释您的解决方案吗?我对 python 的音频方面有点陌生,我通常不使用任何这些东西。谢谢 有几种思考方式。您真正关心的数据是来自音频源的一组样本。这些是此链接第一个图中的蓝点:(en.wikipedia.org/wiki/Digital_audio) 我假设这是我存储在帧中的值,对吧? wav 文件只是在磁盘上存储数据的一种方式。在您提供的代码中,“data = stream.read(chunk)”已经在存储音频数据。从那里您可以将其存储在另一个变量中。 好吧,这有道理,但我如何收听我存储的音频?

以上是关于怎么将8位的WAV声音文件转换为16位?的主要内容,如果未能解决你的问题,请参考以下文章

如何将任何 mp3 文件转换为 .wav 16khz mono 16bit

如何将wav格式声音文件转换为文本文件

将 16 位立体声转换为 16 位单声道声音

在 Javascript 中将 32 位 WAV 转换为 16 位 WAV

如何将 wav 音频文件格式(样本宽度)转换为 8 位格式?

音频到 8 位文本样本转换