Аудио сигнал в массив чем записать
Перейти к содержимому

Аудио сигнал в массив чем записать

  • автор:

Python преобразование звукового сигнала в массив чисел

Задача такая: Идет проигрывание файла ‘audio.mp3’ Необходимо выходной сигнал представить как массив чисел[10, 32, 43, 54, 65, 76, 87, 98, 32, 31] Этот массив будет передаваться в соответствующую функцию каждые 0.1 сек.

Отслеживать

задан 30 мая 2020 в 10:32

67 6 6 бронзовых знаков

Не совсем понятна суть вопроса, но гляньте datareview.info/article/… может чем поможет.

30 мая 2020 в 10:46

Думаю, мне это поможет. Благодарю

30 мая 2020 в 11:07

Можно закрывать тему.. Я сделал другое решение..

31 мая 2020 в 11:05

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • python
  • массивы
  • аудио
  • signal

Документация

Запишите и проигрывайте аудиоданные для обработки в MATLAB ® от аудиовхода и устройств вывода в вашей системе. С R2020b воспроизведение звука поддерживается в MATLAB Online™ .

  • Аудио записи
  • Проигрывание аудио
  • Запись или воспроизведение аудио с помощью функций

Аудио записи

Данные записи из устройства аудиовхода, такого как микрофон, соединенный с вашей системой:

  1. Создайте audiorecorder объект.
  2. Вызовите record или recordblocking метод, где:
  • record возвращает мгновенное управление в функцию вызова или командную строку даже во время записи. Задайте продолжительность записи в секундах или закончите запись stop метод. Опционально, вызовите pause и resume методы. Запись выполняется асинхронно.
  • recordblocking сохраняет контроль, пока запись не завершена. Задайте продолжительность записи в секундах. Запись выполняется синхронно.

Следующие примеры показывают, как использовать recordblocking и record методы.

Вход микрофона записи

В этом примере показано, как записать вход микрофона, воспроизведите запись и сохраните записанный звуковой сигнал в числовом массиве. Необходимо сначала соединить микрофон с системой.

Создайте audiorecorder возразите названному recObj для записи аудиовхода.

recObj = audiorecorder
recObj = audiorecorder with properties: SampleRate: 8000 BitsPerSample: 8 NumChannels: 1 DeviceID: -1 CurrentSample: 1 TotalSamples: 0 Running: 'off' StartFcn: [] StopFcn: [] TimerFcn: [] TimerPeriod: 0.0500 Tag: '' UserData: [] Type: 'audiorecorder'

audiorecorder создает 8 000 Гц, 8-битный, одноканальный audiorecorder объект.

Запишите свою речь в течение 5 секунд.

disp('Start speaking.') recordblocking(recObj, 5); disp('End of Recording.');
play(recObj);

Храните данные в массиве с двойной точностью, y .

y = getaudiodata(recObj);
plot(y);
Запись двух каналов с различных звуковых карт

Записывать аудио независимо с двух различных звуковых карт, с микрофоном, соединенным с каждым:

  1. Вызовите audiodevinfo перечислять доступные карты звуков. Например, этот код возвращает массив структур, содержащий все аудио устройства ввода и вывода в вашей системе:
info = audiodevinfo;
recorder1 = audiorecorder(44100,16,1,3); recorder2 = audiorecorder(48000,16,1,4);
record(recorder1); record(recorder2); pause(5);
stop(recorder1); stop(recorder2);
Определение качества записи

По умолчанию, audiorecorder возразите использует частоту дискретизации 8 000 герц, глубину 8 битов (8 битов за выборку) и один звуковой канал. Эти настройки минимизируют необходимое количество хранения данных. Для более высоких качественных записей увеличьте частоту дискретизации или битовую глубину.

Например, типичные компакт-диски используют частоту дискретизации 44 100 герц и 16-битную глубину. Создайте audiorecorder возразите, чтобы записать в стерео (два канала) с теми настройками:

myRecObj = audiorecorder(44100, 16, 2);

Для получения дополнительной информации о доступных свойствах и значениях, смотрите audiorecorder страница с описанием.

Проигрывание аудио

После того, как вы импортируете или запишете аудио, MATLAB поддерживает несколько способов слушать данные:

  • Для простого воспроизведения с помощью одного вызова функции использовать sound или soundsc . Например, загрузите демонстрационный MAT-файл, который содержит сигнал и данные о частоте дискретизации, и слушайте аудио:
load chirp.mat; sound(y, Fs);
load gong.mat; gong = audioplayer(y, Fs); play(gong);

Если вы не задаете частоту дискретизации, sound воспроизводит на уровне 8 192 герц. Для любого воспроизведения задайте меньшие частоты дискретизации, чтобы воспроизводить более медленно, и большие частоты дискретизации, чтобы воспроизвести более быстро.

Примечание

Большинство звуковых карт поддерживает частоты дискретизации приблизительно между 5,000 и 48 000 герц. Определение частот дискретизации вне этой области значений может привести к неожиданным результатам.

Запись или воспроизведение аудио с помощью функций

Если вы создаете audioplayer или audiorecorder возразите в функции, объект существует только на время функции. Например, создайте функцию проигрывателя , вызванную playFile и простая функция обратного вызова showSeconds :

function playFile(myfile) load(myfile); obj = audioplayer(y, Fs); obj.TimerFcn = 'showSeconds'; obj.TimerPeriod = 1; play(obj); end function showSeconds disp('tick') end

Вызовите playFile от командной строки, чтобы проигрывать файл handel.mat :

playFile('handel.mat')

На уровне записанной частоты дискретизации 8 192 выборок в секунду, проигрывая эти 73 113 выборок в файле занимает приблизительно 8,9 секунд. Однако playFile функционируйте обычно заканчивается, прежде чем воспроизведение завершается и очищает audioplayer объект obj .

Чтобы гарантировать полное воспроизведение или запись, рассмотрите следующие возможности:

  • Используйте playblocking или recordblocking вместо play или record . Методы блокирования сохраняют контроль до проигрывания, или запись завершается. Если вы блокируете управление, вы не можете дать никакие другие команды или методы (такие как pause или resume ) во время воспроизведения или записи.
  • Задайте выходной аргумент для своей функции, которая генерирует объект в базовом рабочем пространстве. Например, измените playFile функция, чтобы включать выходной аргумент:
function obj = playFile(myfile)

Вызовите функцию:

h = playFile('handel.mat');

Поскольку h существует в базовом рабочем пространстве, можно приостановить воспроизведение от командной строки:

pause(h)

Смотрите также

Похожие темы

Документация MATLAB

Поддержка

  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2021 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

getaudiodata

y = getaudiodata( recorder ) возвращает зарегистрированные аудиоданные, сопоставленные с объектом audiorecorder recorder в массиве double y .

y = getaudiodata( recorder , dataType ) преобразовывает данные сигнала в заданный тип данных.

Примеры

Получите данные из объекта магнитофона

Создайте запись с помощью объекта audiorecorder и затем получите звуковой сигнал как числовой массив различных типов данных.

Создайте объект audiorecorder и запишите пять вторых аудиоклипов от своего микрофона.

recObj = audiorecorder; disp('Start speaking.')
Start speaking.
recordblocking(recObj,5); disp('End of Recording.');
End of Recording.

Получите звуковой сигнал как массив double и отобразите данные на графике.

doubleArray = getaudiodata(recObj); plot(doubleArray); title('Audio Signal (double)');

Получите звуковой сигнал как массив int8 и отобразите данные на графике. На основе заданного типа данных тот же звуковой сигнал возвращен с различной областью значений значений. В этом случае значения в массиве int8 могут охватить между -128 и 127 .

int8Array = getaudiodata(recObj,'int8'); plot(int8Array); title('Audio Signal (int8)');

Входные параметры

recorder — Объект магнитофона
Объект audiorecorder

Объект магнитофона, заданный как объект audiorecorder . Используйте функцию audiorecorder , чтобы создать объект.

тип данных Тип данных
‘double’ (значение по умолчанию) | ‘single’ | ‘int16’ | ‘int8’ | ‘uint8’

Тип данных выходного звукового сигнала, заданного как одно из этих значений: ‘double’ , ‘single’ , ‘int16’ , ‘int8’ или ‘uint8’ .

Типы данных: char | string

Выходные аргументы

y Данные о звуковом сигнале
числовой массив

Данные о звуковом сигнале, возвращенные как числовой массив.

Количество столбцов в y зависит от количества каналов в записи: один для моно и два для стерео.

Диапазон значений y зависит от заданного dataType .

Демонстрационный диапазон значений

— От 32768 до 32 767

Смотрите также

Темы

  • Запись и проигрывание аудио
  • Поддерживаемые форматы видео и форматы аудиофайла
Представленный в R2006a
Документация MATLAB
Поддержка
  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2019 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

NAudio. Как записать звук в массив байтов?

Author24 — интернет-сервис помощи студентам

NAudio: записать звук с выходного устройства
Здравствуйте! Пытаюсь записать звук с колонок средствами NAudio, но записывать получается только с.

Как записать весь в текст боксе в массив байтов?
пишу в текст бокст это 00 03 01 00 00 0C как сделать что б он записал в по 2 цифры в каждый.

Как можно записать файл больше 8ГБ в массив байтов?
Здравствуйте,подскажите, пожалуйста, как можно записать файл больше 8ГБ в массив байтов?

Необходимо файл (любого расширения) записать в базу данных как массив байтов
Необходимо файл (любого расширения) записать в базу данных в byte форме. И затем взять его (выбрав.

Регистрация: 26.04.2017
Сообщений: 14

Доброго дня. Есть такой вариант (необходимо допиливать; сам упражняюсь):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//--Код чтения байт из файла OpenFileDialog open = new OpenFileDialog(); open.Filter = "Wave File (*.wav)|*.wav;"; if (open.ShowDialog() != DialogResult.OK) return; NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName)); int size = 4096; int bytes = 4; //--Массив для хранения байт, составляющих сигнал byte[] buffer = new byte[size]; //--Массив для хранения значений амплитуд сигнала double[] amps = new double[size / bytes]; while(wave.Position  wave.Length) { //--Запись байт в массив wave.Read(buffer, 0, size); for (int i = 0; i  read / bytes; i++) { //--Получить значения амплитуд сигнала amps[i] = BitConverter.ToSingle(buffer, i * bytes); } }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Записать массив байтов с микрофона
Всем привет! Возникла проблема, никак не могу придумать такую штуку, допустим, имеется небольшое.

Массив байтов записать в файл
Вообщем экспериментирую с шифрованием. Беру к примеру файл размером 33*663 байт. Этот файл.

Считать по 4 байта и записать в массив байтов
есть какой то TcpClient который отправляет данные на сервак мне нужно эти данные на сервере.

Поблочно записать массив байтов в файл
Есть массив байтов размером 256 КБ. Нужно записать его поблочно в файл(повторить 10 раз, размер.

Массив байтов записать в нетипизированый бинарный файл
Скажите как работать с бинарными файлами в си, а именно есть массив байтов: char; //в нем.

Считать файл и записать данные в массив байтов
Хочу создать класс который считывает файл и записывает данные в массив байтов. Есть следующий код.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *