Лена записывает голосовое сообщение для своей подруги. Перед...
Категория: Кодирование звуковой информации | Добавлено: 06.09.2026
Задание:
Лена записывает голосовое сообщение для своей подруги. Перед отправкой сообщение оцифровывается в формате стерео с частотой дискретизации 28 000 Гц и глубиной кодирования 8 бит. Определите наименьшее целое количество Кбайт, необходимое для сохранения сообщения в памяти (без учёта заголовка), если его длительность — 2 минуты 20 секунд. В ответе укажите только число
Решение:
import math
# частота ∗ глубина ∗ каналы ∗ секунды −> биты; делим на 8∗1024 = 2∗∗13 −> Кбайтprint(math.ceil((28000 * 8 * 2 * (2 * 60 + 20)) / 2**13))
# частота ∗ глубина ∗ каналы ∗ секунды −> биты; делим на 8∗1024 = 2∗∗13 −> Кбайтprint(math.ceil((28000 * 8 * 2 * (2 * 60 + 20)) / 2**13))
Этот код решает задачу на расчёт объёма звукового файла в килобайтах.
| Строка | Код | Что происходит |
|---|---|---|
| 1 | import math |
Подключаем модуль math для функции округления вверх (ceil) |
| 2 | # частота ∗ глубина ∗ каналы ∗ секунды → биты; делим на 8∗1024 = 2**13 → Кбайт |
Комментарий с формулой: перемножаем параметры, получаем биты, делим на 8·1024 (или 213), чтобы получить килобайты |
| 3 | print(math.ceil((28000 * 8 * 2 * (2 * 60 + 20)) / 2**13)) |
Считаем объём и округляем вверх до целого Кбайт |
Формула: V (Кбайт) = ⌈ (частота × глубина × каналы × время_в_сек) / (8 × 1024) ⌉
Разбор чисел в коде:
- 28000 — частота дискретизации (Гц)
- 8 — глубина кодирования (бит) — но! здесь 8, хотя обычно глубина 8 бит = 1 байт
- 2 — количество каналов (стерео)
- (2 * 60 + 20) — время: 2 минуты 20 секунд = 140 секунд
- 2**13 — это
8 × 1024 = 8192(перевод из бит в Кбайт) - math.ceil() — округление вверх, чтобы файл поместился целиком
Результат: 7657 Кбайт (это около 7,48 Мбайт).