Как остановить звук в MATLAB?

33

При воспроизведении звука с использованием, например,

sound(x,fs);

Я иногда случайно ошибаюсь. Если x имеет значительную длину, я пытаюсь дождаться завершения звука. Любые предложения о том, как "прервать" воспроизведение? Я уже пробовал

sound(mute,fs); % Mute is a short vector containing all zeroes

Но это не сработало. Кстати, я использую Windows.

UPDATE:
Следующее решение, предложенное кигураем, похоже, делает трюк:

sound(x,fs); % Start the audio

Теперь убейте звук

clear playsnd
  • 0
    Я предполагаю, что вы пробовали Ctrl-C, но это не сработало?
  • 10
    Спасибо! clear playsnd не работал для меня в R2013a, однако, clear sound работал, так что все равно оцените подсказку :)
Показать ещё 1 комментарий
Теги:

4 ответа

23
Лучший ответ

Никогда не использовался "sound()", но когда я играл аудио с использованием wavplay (...,..., "async" ), я могу остановить звук, выпустив

clear playsnd

Может быть, это работает и со звуком()? Примечание. Это при игре асинхронно. Для синхронного воспроизведения я предполагаю, что CTRL-C должен сломать его, но у меня были проблемы с wavplay() в последний раз, когда я это пробовал.

  • 1
    Только что попробовал это: запустил аудио, используя «sound ()» и выдавая чистое воспроизведение и остановив аудио. Ницца!
  • 3
    если вы сыграли много последовательных звуков, он остановит только последний
Показать ещё 1 комментарий
44

Попробуйте эту команду. Определенно работает!!

чистый звук

  • 2
    Самый простой ответ, и он просто работает
  • 3
    Это сработало для меня, в то время как "clear playsnd" - нет.
Показать ещё 5 комментариев
29

Mathworks говорит (и это относится и к sound),

В MATLAB нет функции, которая может приостановить или остановить воспроизведение звука один раз инициированный WAVPLAY. Вместо того, чтобы использовать WAVPLAY, альтернатива - создать объект AUDIOPLAYER. Этот тип объект имеет методы, которые позволяют приостановка, возобновление и прекращение воспроизведения звука. Например:

player = audioplayer(Y, Fs)

% start the playback
play(player);

% pause the playback
pause(player);

% resume the playback
resume(player)

% stop the playback
stop(player)
  • 0
    Блин, я опоздал на 8 сек;)
  • 1
    Lol, это весело, как все, кажется, проснулись, ответили на этот вопрос около 1000 EST :)
Показать ещё 5 комментариев
7

Вместо этого используйте объект аудиоплеер - он дает вам полный контроль над тем, что вы делаете со звуком. То есть:

player = audioplayer(x, fs);
play(player)   % start the player
stop(player)   % stop whenever you like...

В Audioplayer есть много других полезных вещей: http://www.mathworks.com/help/techdoc/ref/audioplayer.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню