Linux прослушать звук с микрофона

Синхронное воспроизведение звука с микрофона

Приветствую! Столкнулся с такой проблемой: не воспроизводится звук с микрофона на ноутбуке Samsung NP300V5A (это необходимо для записи музыки). Стоит Ubuntu 11.10. На стационарном ПК с той же осью все работает без проблем! Пробовал на Win7 — все работает! В качестве звуковой системы стоит Alsa. Alsamixer смотрел от и до и ничего не нашел, чтобы решить проблему. Пробовал запускать в терминале «arecord | aplay» все работает, но с огромной задержкой! Так что, нужна помощь, ибо хочу уже полностью перейти на Linux

Попробуй jack audio connection kit

Попробовал, но он гонит все через процессор, а не напрямую в дуплекс( К тому же отсюда и задержки. Смог добиться задержки в 5 мс, но при этом часто происходят обрывы звука, поэтому jack — не выход в данной ситуации. Хотелось все же узнать, почему в alsamixer отсутствуют некоторые бегунки, которые позволяют сделать соответствующую настройку? Возможно, что под Linux нет подходящий драйверов для звуковой карты ноутбука (HDA Intel PCH).

Дай JACKу права на работу с ядром в режиме Realtime

Так и было сделано еще при первом запуске

qjackctl от рута — все летает, чяднт?

От рута вообще звук не идет, только щелчки редкие(

может, sudo padsp qjackctl?
там в убунте много костылей на звук

Так он вообще сервер не запускает. У меня на ПК тоже стоит Ubuntu 11.10 и там все работает даже без jack! Просто, воткнул кабель и все работает.

видимо, альса не подхватывает твою звуковушку верно. Если её нет в списке поддерживаемых, то нет. Если есть, то тут уже к гуру вопрос.

не воспроизводится звук с микрофона на ноутбуке Samsung NP300V5A (это необходимо для записи музыки).

Сам не сильно аудиофил, но скажу сразу, что именно вот эта затея (писать музыку с микрофонного входа) полнейшая фигня. Пожалей музыку. Писать надо с линейного входа. А если нужно писать не абы как, а более-менее, то лучше прикупить к ноуту юсб-звуковушку. Это будет гораздо лучше и качественнее. Кстати, вот это http://market.yandex.ru/model.xml?modelid=1009808&hid=91027&text=emu . в субботу в продаже видел (в Тамбове, магазин RET), стоит как грязь весной. Но, если не загоняться, то можно взять практически любую внешнюю звуковушку и она покажет себя намного лучше, чем набортная.

Теперь насчёт основного вопроса. Почему именно так, сказать не могу. Но, интеловский кодек не богат на ползунки в микшере. И для звука есть специальные дистрибутивы http://www.64studio.com именно с джеком и рилтаймовым ядром. Может быть лучше попробовать их?

Спасибо за совет, но я записываю лишь наброски, чтобы не забыть потом) Что касается дистрибутива, вечерком попробую, вдруг да поможет)

Источник

Направить звук с микрофона на наушники во время записи в PulseAudio

Всем привет! Наверно не совсем точно описал проблему. Приведу пример: в оффтопике при подключении микрофона, он сразу слышен в наушниках или колонках. Потому очень удобно записывать, например, подкаст. Слышишь сам себя. В Linux такое можно сделать в JACK, и я это делал. Но звук пишется с хрипами. Пробовал ставить реалтайм-ядро — безрезультатно. Китайска USB-звуковуха при подключении через JACK вообще входит в петлю и визжит в динамики. Скажите, можно ли получить то, что мне нужно, средствами PulseAudio? Видимо встроенная в мой ноут звуковуха хреново работает с режимом реального времени.

Проблема решена при помощи модуля loopback:

Если не ставить доп.параметры — задержка составит 23 милисекунды. Надеюсь кому-нибудь тоже пригодится. Отрубается это уже при помощи unload-module Можно наваять скриптик.

Комфортно? Спрашиваю без всякой иронии, действительно интересно. Мне на клавишах больше 10-12 мс уже неудобно. Вокалисты иногда жалуются на задержку даже при 6-8 мс.

1. Забудь о реалтайм ядрах.

Читайте также:  Как настроить udp windows

2. Твой выбор преемптивность и HZ поднятый до 1000.

Скорее всего ты промахнулся в цифрах на порядок.

Сигналы в нервах слишком медленно бегают чтобы говорить о таких числах.

Они будут жаловаться всегда, но если им цифры не говорить правильные, то можно поразвлечься.

Нет конечно. Нет синхронизации с тем что ты говоришь и что слышишь в наушниках. Кстати небольшая задержка всё равно есть. Сейчас смотрю как решить

Я не ставил именно реалтайм ядро (то есть с кучей патчей), я поставил lowlatency-ядро из репов. Там таймер как раз на 1000 Гц, но всё равно слышны похрипывания при записи через JACK

Нет, конечно. 60-80 мс — совершенно конская задержка, играть на такой невозможно в принципе. Уже больше 15-20 быстрые партии не поиграешь.

http://rmmedia.ru/threads/72423/ вот тут некоторым людям даже 5-6 мс критичны.

Я и не говорю. Но некоторые даже при 8-10 мс: «Ой, а что я себя в наушниках как бы с задержкой слышу, как будто эхо!»

Кстати, странно, что с jack хрипит. Какой пртцессор, нет ли какого пересемплирования?

Это ядро тебе тоже неактуально. Тебе скорее всего нужно стандартное дестопное ядро.

если человек слышет «как-будто» эхо то там задержки от 250 мс. «Особенные» люди слышат от 150 мс. Остальное — иллюзия. Мозг впринцыпе не способен различать события с растоянием между ними около 35 мс. Плюс время беготню по нервам.

У него Пульса. Так и должно быть.

Pentium 2020M. Естественно с пульсом есть пересемплирование. Но с ним нет хрипов на записи. А с JACK есть

Ты очень заблуждаешься. 100 мс — это 16-я нота в темпе 150 bpm. Их различает любой человек. «Особенные» люди с тренированным слухом улавливают в таком темпе мелодические конструкции 64-ми и даже 128-ми, хотя и непродолжительные.

Я при сведении прекрасно слышу предилей на реверберации в 30 мс. Я больше скажу — я не могу петь с хором синхронно с другого конца зала, хотя там расстояние меньше 30 метров. Лень считать задержку, но она явно меньше даже 25 мс.

с хором синхронно с другого конца зала

Может, ещё эхо сбивает?

Мозг впринцыпе не способен различать события с растоянием между ними около 35 мс.

мракобесие какое-то
подвигай трек с гитарой относительно барабанов в аудиоредакторе на -35, 0 и +35мс
разница будет драматическая

то, что ты выставил задержку в 1мс в пульсе — совершенно не означает,что так и есть. Это же пульса. Задержка альсы плюс самого пульса на «внутренние нужды» и только задержка на луп в одну миллисекунду.

Вряд ли, прямой сигнал всегда сильнее отражений, да и не сильное обычно там эхо.

Это делается на голой альсе если что. Причем не важно, стоит у тебя пульса или нет.

И это все вообще без задержек, т.е. ты слушаешь то что входит в карту сразу на выход и параллельно оно же идет в запись.

Чтобы вообще без задержек — direct monitoring в карте нужен
иначе всё равно АЦП-ЦАП и всё равно задержки

Ну, аналоговый проброс же. Даже на реалтеке ац97 встроенном оно есть.

чота сроду я не видел там
правда, я и ац97 12 лет уже не видел
правда чтоли есть?

Как это сделать на голой альсе?

Видимо чето порегулировать в alsamixer.

meliafaro , ist76 — признаю что заблуждался.

Открываешь в консоли альсамиксер и жмешь ф5. Там будут уровни линейного и микрофонного входов. Эти уровни могут сразу отправлены на выход — проверь чтобы они не были замьючены (англицкая м на клаве стоя на выбранном канале) и уровни стояли не на нуле (стрелки вверх вниз).

Вот ты получил вывод входа без задержек и без прохождения через движок DAW и других программ.

Для того чтобы захватить звук нужно найти ползунок с капчуром и поставить нужный уровень (для теста пойдет и 50%) а затем найти тумблер откуда капчур брать и выбрать микрофон или линию. Уровень ползунка капчура не влияет на уровень ползунка мониторинга (и наоборот, они независимы).

Читайте также:  Mac os последняя версия образ

При записи нормальная программа (например Ardour) компенсирует задержку и пишет твой звук как будто задержек не было.

1) ползунок уровня линейного входа (не влияет на капчур)
2) мьют линейного входа (не влияет на капчур)
3) ползунок уровня капчура (не влияет на уровень входа)
4) тумблер откуда брать капчур (у меня их аж два) — указано брать с линейного входа

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

Источник

Pocketsphinx. Распознавание речи и голосовое управление в Linux

— Всё в порядке, Лёня?
Динамики отрегулированы на максимум, я морщусь, отвечаю:
— Да. Тише звук.
— Звук — тише, — соглашается «Виндоус-Хоум», — тише, тише…
— Хватит, Вика
С.Лукьяненко, «Лабиринт отражений»

Введение

В данной статье я не буду касаться Julius, поскольку гайдов по его использованию (в том числе и в Рунете) хватает. Речь будет идти о CMU Sphinx.

Описание и установка

Не забудьте после установки выполнить:

Для работы с /dev/dsp установим согласно FAQ пакет oss-compat.

Базовое использование

/sphinx.
Синтаксис нашей команды таков:

-argflie: имя файла в текущей директории, содержащего все аргументы.
stderr для удобства перенаправим в файл.
Содержимое argfile:

-hmm: путь к каталогу, содержащему файлы акустической модели (шаблоны отдельных звуков).
-lm: путь к файлу триграммной языковой модели (можете почитать здесь).
-dict: путь к файлу словаря произношения.
-cepdir: путь к каталогу со звуковыми файлами. Будьте внимательны: если вы вносите -cepdir в файл аргументов, то сокращенный путь

/sphinx обрабатывается неправильно: приходится писать полный путь. Если вы будете прописывать аргумент после команды, то можете использовать сокращенный путь.
-ctl: файл с именами обрабатываемых файлов. Файл goforward.raw мы возьмем из комплекта исходников pocketsphinx (там есть еще пару файлов *.raw — можете распознать и их).
-cepext: расширение обрабатываемых файлов
-adcin: указатель принадлежности обрабатываемого файла к raw.
-hyp: имя файла, в который будет выведен распознанный текст.
Аргументы с путями к файлам моделей указывать обязательно. Помните, что многие параметры заданы по умолчанию (смотрите stderr). Поэтому для работы с файлом *.raw необходимо принудительно указать расширение, иначе будет использован параметр по умолчанию — расширение .mfc (а таких файлов у нас в базовом примере, естественно, нету — будут сыпаться ошибки).
В результате исполнения у нас в файле outname будет следующее содержимое:

Параллельно можете посмотреть, откомпилировать и запустить в каталоге с файлом goforward.raw программку аналогичного назначения на C (пример от разработчиков).
Для проверки на своих примерах я решил не мудрствовать и воспользовался sox (проверьте, установлен ли этот пакет у вас).
Писать звук будем следующим образом (можете почитать man sox ):
— для raw

Окончание записи по Ctrl+C .
У меня sox при этом ругался на невозможность использования частоты дискретизации: can’t set sample rate 16000; using 48000 . Учтите: нагло лжет — на самом деле все в порядке.
Я писал и распознавал raw и wav на различных примерах из подключенных словарей — все распознавалось вполне приемлимо.

Адаптация звуковой модели

Скачиваем по первой ссылке предлагаемые файлы в отдельную директорию, в которой и будем работать.
Теперь надиктуем предложения из файла arctic20.txt по образцу: у вас должно получиться двадцать файлов, названных по порядку согласно схеме arctic_0001.wav . arctic_0020.wav .
Чтобы упростить запись, воспользуемся предложенным скриптом:

Соответственно, чтобы прослушать полученное, выполним:

Скопируем акустическую модель (с которой мы и работали) из /usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k в нашу рабочую директорию.
Теперь создадим файлы акустических особенностей (напоминаю: работаем в директории с файлами *.wav).

В результате получаем файлы *.mfc.
Скачиваем экстра-пак (89,0 МБ); файл под названием mixture_weights из него, расположенный в pocketsphinx-extra/model/hmm/en_US/hub4_wsj_sc_3s_8k.cd_semi_5000 помещаем в каталог с акустической моделью.
Также необходимо конвертировать mdef-файл акустической модели в текстовый формат:

Теперь, согласно терминологии гайда по адаптации, соберем накопленные данные. Скопируем утилиту bw из /usr/local/libexec/sphinxtrain/bw в рабочий каталог (перед этим не забудьте установить sphinxtrain!).

Читайте также:  Python upgrade mac os

Запускаем и видим:
SYSTEM_ERROR: «corpus.c», line 339: Unable to open arctic20.fileids for reading: No such file or directory
Очевидно, правая рука у разработчиков не ведает, что творит левая (про неактуальность части документации я уже не говорю).
Переименовываем в рабочем каталоге файл arctic20.listoffiles в arctic20.fileids
Теперь все работает.
Произведем MLLR-адаптацию (эффективна для ограниченного объема данных в модели):

Эта команда создаст файл адаптационных данных mllr_matrix .
Теперь при распознавании с адаптированной моделью можно добавлять параметр -mllr /path/to/mllr_matrix .
Параллельно произведем другой метод адаптации: MAP.

Сделаем копию модели:

И произведем MAP-адаптацию:

Теперь создадим sendump файл, отличающийся меньшим размером:

Тестирование адаптации

Проверяем (помните, что адаптация не приведет к стопроцентно верному результату: адаптированные модели будут точно так же ошибаться; плюс в том, что они будут делать это реже. Мои вполне наглядные записи были сделаны далеко не с первой попытки: было достаточно записей, где ошибались все модели):
1. Распознавание с помощью базовой модели:

2. Распознавание с помощью модели с MLLR-адаптацией: при указании параметром -mllr пути к моей матрице происходила ошибка сегментирования (копаться я не стал). При распознавании без этой опции результат полностью идентичен результату оригинальной модели.
Впрочем, в мануале заявлено, что MLLR-адаптация лучше всего подходит для непрерывной модели (т.е. для Sphinx4).
3. Распознавание с помощью модели с MAP-адаптацией:

Как можно убедиться, результат полностью идентичен записи. Адаптация реально работает!

Русский язык в Pocketsphinx

Скачаем отсюда русские модели, созданные на voxforge. На разнообразие моделей можно посмотреть здесь и просто в интернетах.

Реализовывать пример голосового управления компьютером мы будем на русском, а значит нам нужны собственная языковая модель и собственный словарь (вероятнее всего, части наших слов в распространенных примерах не будет).

Создание собственной статической языковой модели

Далее создаем словарный файл:

Создаем языковую модель в arpa-формате:

И создаем DMP-модель.

Создание собственного словаря

Тащим с гитхаба утилиты:

Переходим в каталог ./yourdir/text2dict и создаем там текстовый файл my_dictionary с вашим списком слов (каждое новое слово — с нового абзаца).

И вот ваш словарь создан.

Теперь пробуем распознавать слова, присутствующие в словаре (благо, в нашем примере их немного). Не забудьте указать в аргументах собственную языковую модель и словарь — все должно работать. При желании можно произвести адаптацию акустической модели (сразу предупреждаю: при использовании утилиты bw в процессе адаптации для большинства акустических моделей опция -svspec не нужна ).

Использование JavaScript Grammar File вместо статической языковой модели

«|» обозначает условие выбора. Т.е. мы можем сказать «тише» или «закрыть окно». Правда, по сравнению с использованием языковой модели есть один минус: говорить нужно гораздо членораздельнее.
Созданный jsgf-файл указываем с параметром -jsgf (параметр -lm в таком случае не нужен).

Реализация голосового управления

Моей целью не было реализовать крутой интерфейс управления: здесь все будет очень примитивно (если есть желание и возможность, можете посмотреть на заброшенный проект Gnome Voice Control).
Действовать будем следующим образом:
1. Пишем команду, распознаем её.
2. Передаем распознанный текст в файл, в соответствии с ним выполняем команду.
В качестве тестовых команд будем использовать уменьшение и увеличение громкости звука.

Внимательно почитав мануал к sox, я решил оканчивать запись по истечении секунды тишины с порогом тишины в 3.8% (порог явно является сугубо индивидуальным значением и зависит от вашего микрофона и окружающей обстановки).
К сожалению, я не нашел в pocketsphinx_batch параметр вывода только для распознанных слов, поэтому я воспользуюсь инструментом sed :

Эта конструкция удалит из строки вида «наша команда (audio -4023)» пробел перед открывающей скобкой, её саму и все последующее содержимое. В результате мы получим строку вида «наша команда», что нам и нужно.
Вот сам скрипт:

Скрипт в ответ на команды «тише» или «громче» выполняет соответствующие действия с сигнализацией через notify-send.
К сожалению, работать он будет только при запуске из терминала (иначе звук не пишется). Впрочем, представление о голосовом управлении он дает (возможно, вы предложите лучший метод).

Источник

Оцените статью