pcm流数据文件存放在文件夹路径stream_file_path中。按下列要求进行音频数据处理: 1.将所有audio字段里面的二进制音频数据拼接成一个长pcm数据; 2.将第一步生成的pcm数据按照: (1)单声道, (2)采样字节长度为2, (3)采样率为24000, 将音频数据按student_answer_path生成wav格式的音频文件并保存。 提示 注意去除字符串数据中多余的符号 json.loads(s) # 将字符串转化为json格式数据 base64.b64decode(s) # 将字符串s转为pcm数据格式
时间: 2023-06-25 14:08:33 浏览: 61
以下是Python代码实现:
```python
import os
import json
import base64
import wave
# 文件夹路径和文件名
stream_file_path = './stream/'
student_answer_path = './student_answer.wav'
# 将所有audio字段里面的二进制音频数据拼接成一个长pcm数据
pcm_data = b''
for file_name in os.listdir(stream_file_path):
if file_name.endswith('.json'):
with open(stream_file_path + file_name, 'r') as f:
data = json.load(f)
audio_data_str = data['audio'].replace(' ', '+') # 去除多余的符号
audio_data = base64.b64decode(audio_data_str)
pcm_data += audio_data
# 创建wav文件
with wave.open(student_answer_path, 'wb') as f:
f.setnchannels(1) # 单声道
f.setsampwidth(2) # 采样字节长度为2
f.setframerate(24000) # 采样率为24000
f.writeframes(pcm_data)
```
其流程为:
1. 遍历文件夹中所有json文件;
2. 对每个json文件进行解析,提取出其中的audio字段,去除多余的符号后将其base64解码为pcm数据;
3. 将所有pcm数据拼接为一个长pcm数据;
4. 创建一个wav文件,设置单声道、采样字节长度为2、采样率为24000,并将长pcm数据写入wav文件中。