一、题目
数字化语音存储与回放系统
二、任务
设计并制作一个数字化语音存储与回放系统,其示意图如下:
三、要求
1.基本要求
(1)放大器 1 的增益为 46dB,放大器 2 的增益为 40dB,增益均可调;
(2)带通滤波器:通带为 300Hz~3.4kHz ;
(3)ADC:采样频率 f s=8kHz,字长=8 位;
(4)语音存储时间≥10 秒;
(5)DAC:变换频率 f c=8kHz,字长=8 位;
(6)回放语音质量良好。
2.发挥部分
在保证语音质量的前提下:
(1)减少系统噪声电平,增加自动音量控制功能;
(2)语音存储时间增加至 20 秒以上;
(3)提高存储器的利用率(在原有存储容量不变的前提下,提高语音存储时间);
(4)其它(例如: 校正等)。
GPT-4o给出的设计方案:
一、设计思路
构建一个数字化语音存储与回放系统,包含如下模块:
采样频率和字长:
增益调节:
滤波器设计:
下面是实现ADC采样和DAC输出的基本C语言代码示例:
#include "stm32f4xx_hal.h"
ADC_HandleTypeDef hadc1;
DAC_HandleTypeDef hdac1;
void SystemClock_Config(void);
int main(void) {
HAL_Init();
SystemClock_Config();
// ADC Initialization
ADC_ChannelConfTypeDef sConfig = {0};
hadc1.Instance = ADC1;
hadc1.Init.Resolution = ADC_RESOLUTION_8B;
hadc1.Init.ScanConvMode = DISABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
HAL_ADC_Init(&hadc1);
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = 1;
HAL_ADC_ConfigChannel(&hadc1, &sConfig);
// DAC Initialization
hdac1.Instance = DAC;
HAL_DAC_Init(&hdac1);
DAC_ChannelConfTypeDef sConfigDAC = {0};
sConfigDAC.DAC_Trigger = DAC_TRIGGER_NONE;
sConfigDAC.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
HAL_DAC_ConfigChannel(&hdac1, &sConfigDAC, DAC_CHANNEL_1);
// Start ADC and DAC
HAL_ADC_Start(&hadc1);
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
uint8_t audioBuffer[8000]; // Buffer for storing 10 seconds of audio at 8 kHz
while (1) {
// Record audio
for (int i = 0; i < 8000; i++) {
if (HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY) == HAL_OK) {
audioBuffer[i] = HAL_ADC_GetValue(&hadc1); // Store in buffer
}
}
// Play audio
for (int i = 0; i < 8000; i++) {
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_8B_R, audioBuffer[i]); // Output from buffer
HAL_Delay(1); // Delay to match sampling rate
}
}
}
// System Clock Configuration...
void SystemClock_Config(void) {
// Implement system clock configuration
}
该设计方案详细展示了从语音信号的采集、放大、滤波、A/D转换、存储、D/A转换到播放的全流程。通过合理设置放大器增益、滤波器参数及ADC/DAC采样率和分辨率,确保了系统的高效和高质量运行,满足了题目要求的各项指标。
这个题目考察的知识点: