安装环境
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev
sudo apt-get install libopus-dev
pip install opuslib pyaudio wave numpy
运行
import opuslib
import opuslib.api.encoder
import opuslib.api.decoder
import pyaudio
import wave
import struct
import numpy as np
import time filename = "/root/ghz/opus_workspace/example_recording.wav"
wave_read = wave.open(filename, "rb")
wav_channels = wave_read.getnchannels()
wav_samplewidth = wave_read.getsampwidth()
wav_samplerate = wave_read.getframerate()
wav_frames = wave_read.getnframes()output_filename = filename[:-4]+"_output"+filename[-4:]
wave_write = wave.open(output_filename, "wb")
print("Writing wav into file '{:s}'".format(output_filename))wave_write.setnchannels(1)
wave_write.setframerate(16000)
wave_write.setsampwidth(2)enc = opuslib.Encoder(fs = wav_samplerate,channels = 1 ,application = "audio")
enc._set_bandwidth(1105)
enc._set_lsb_depth(16)
enc._set_complexity(10)
enc._set_bitrate(wav_samplerate*2)
enc._set_vbr(1)
enc._set_force_channels(1)
enc._set_packet_loss_perc(0)
dec = opuslib.Decoder(fs = wav_samplerate,channels = 1 )
wav_frame_cnt = 0
desired_frame_duration = 20/1000
desired_frame_size = int(desired_frame_duration * 16000)while True:pcm = wave_read.readframes(desired_frame_size)if len(pcm) == 0:breakencoutput = enc.encode(pcm,320)decoutput = dec.decode(encoutput,320)wave_write.writeframes(decoutput)
print("end.")