任务名称
1999年_F题:数字化语音存储与回放系统
任务要求
难度

一、题目
数字化语音存储与回放系统
二、任务
设计并制作一个数字化语音存储与回放系统,其示意图如下:


三、要求
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给出的设计方案:


一、设计思路

构建一个数字化语音存储与回放系统,包含如下模块:

  1. 拾音器:捕捉语音信号。
  2. 放大器1:初步放大语音信号,增益可调范围为 0-40 dB。
  3. 带通滤波器1:滤除非语音频率噪声,保留300 Hz到3.4 kHz的信号。
  4. ADC(模数转换器):将模拟语音信号转换为数字信号,采样率为8 kHz,分辨率为8位。
  5. 微处理器及存储器:处理和存储数字化后的语音数据。
  6. DAC(数模转换器):把存储的语音信号从数字信号转换回模拟信号。
  7. 带通滤波器2:滤除DAC输出信号的高频噪声。
  8. 放大器2:放大恢复后的模拟语音信号,增益可调范围为0-40 dB。
  9. 耳机:回放声音信号。

二、方案论证

  1. 拾音和放大:通过拾音器捕捉语音信号,并通过可调增益的放大器1进行信号适配。
  2. 滤波和数字化:使用带通滤波器1去除噪声后,通过ADC将模拟信号转换成数字信号,保证良好的音质。
  3. 存储和重放:数字语音数据存储在微处理器的内存中,通过DAC转换回模拟信号,带通滤波器2滤除噪声后,通过放大器2和耳机重放。
  4. 增益可调性、稳定性和抗干扰能力都是设计中需要重点考虑的因素

三、重要指标理论分析

  1. 采样频率和字长

    • 根据香农采样定理,采样频率必须大于信号最高频率的2倍。语音频带为300 Hz至3.4 kHz,因此选择8 kHz采样率能满足要求。
    • 字长8位,能够提供256级的量化精度,对语音信号来说已经足够。
  2. 增益调节

    • 放大器1和放大器2的增益范围为0-40 dB且可调,确保适应不同输入信号和输出信号的幅度需求。
  3. 滤波器设计

    • 带通滤波器设计中心频率为1.85 kHz,带宽控制在3100 Hz,保留有效语音频率成分,滤除无用噪声。

四、最重要电路原理图设计要点

  1. 放大器电路
    • 使用运算放大器设计,在放大电路中通过可调电阻实现增益调节。
  2. 带通滤波器电路
    • 采用有源带通滤波器,设计为双T网络或使用多级RC滤波器。
  3. ADC和DAC电路
    • 选择合适的8位ADC(如ADC0804)和DAC(如DAC0808),确保时钟频率和数据吞吐能力满足实时语音处理要求。
  4. 微控制器电路
    • 使用STM32系列微控制器,提供必要的存储支持及ADC/DAC接口能力。

五、核心器件设计要点

  1. 拾音器
    • 需要具有高灵敏度和良好的频率响应,以捕捉完整的语音频带信号。
  2. 运算放大器
    • 需要选择低噪声和高增益的运算放大器,如LM358,可以通过调节反馈电阻实现增益调节。
  3. 滤波器元件
    • 采用高精度电阻和电容,确保带通滤波器的中心频率和带宽准确。
  4. ADC/DAC芯片
    • 确保芯片具有高转换速率和低功耗,适合实时处理语音信号。

六、简单C代码(STM32示例)

下面是实现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采样率和分辨率,确保了系统的高效和高质量运行,满足了题目要求的各项指标。


这个题目考察的知识点:

  1. 模拟信号处理:包括拾音器的使用、信号放大、滤波等。要求能设计和调节放大器增益(0-40 dB)。
  2. 数字信号处理:涉及ADC(模数转换)和DAC(数模转换)的应用。需要掌握采样频率的选择(8 kHz)及量化精度(8位)。
  3. 滤波器设计:设计和实现带通滤波器,能够在特定频率范围内过滤信号(300 Hz至3.4 kHz)。
  4. 存储和数据处理:利用微处理器和存储器进行语音数据的存储和处理,需要考虑存储效率和数据读取方法。
  5. 系统综合设计:综合模拟和数字电路,实现从语音信号采集到重放的完整流程。
  6. 电路设计基础:掌握各模块的电路设计,包括运算放大电路、滤波电路、ADC/DAC接口电路、增益调节电路等。
  7. 硬件接口和控制:MCU或其他微处理器与ADC、DAC及存储器之间的数据传输和控制方法。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号