Voice recording plugin

A simple voice recording plugin, that enables posting voice messages recorded directly in the browser of your desktop or mobile.

Check english.best community forum to see it in action. The code is hosted on Github.

The library uses a slightly modified version of Microm library, which features RecordRTC and lamejs.

After the standard installation, enable composer_audio_upload_enabled in the settings.

When composing a new message, simply click on the microphone icon to start recording. After you’re done, your recording will be converted to mp3 for enhanced cross-browser compatibility.

Currently the reencoding is done using lamejs, which isn’t optimal and can take some time for longer voice messages or on slower devices.

If for some reason it doesn’t work on your device, I’d be grateful if you could indicate the device, browser and system version. The testing wasn’t extremely extensive, but we have some users using it already. I count on some input and / or pull requests :slight_smile:

58 лайков

Thank you very much :smiley:

1 лайк

Cool! We regularly get asked for the ability to add a voice message or even a video recording directly to posts. I’ll try this out and let you know how it works out!

Some feedback:

  • mp3, the file type of the uploaded audio recording, is by default not allowed as an upload type. suggest adding a note to the install instructions to enable mp3 uploads.
  • an obvious admin setting to add would be to allow limiting the length of audio recording that can be uploaded. right now it seems that the recording can go on indefinitely though I have not tried it. A max of say 30 seconds or 2 minutes would be suitable for some communities. The utility of an audio recording diminishes the longer it gets, so some default max eg 5 minutes would be sensible.
  • an admin setting to limit by trust level would be helpful
  • a progress indicator during the recording would be helpful, to indicate long the recording is getting, as well as an audio level indicator to show that the audio recording is actually working.
  • the file size of the saved recording is displayed in kilobytes, not megabytes, so eg a 3 minute recording is 2000+. It would be nice to see it in mb.
  • as you indicated, it takes a while to save even a three minute recording, so a progress indicator of the saving process would be helpful.

Is there any scope or ability to add video recording to this plugin? It would be very welcome in my community.

7 лайков

And a quick follow-up after spending a bit of time with this plugin. While looking at

I looked around here but was not able to immediately find posts containing voice recordings (turns out it’s buried in this topic). Some icon (maybe microphone?) indicating topics containing voice recordings might be a good idea, as well as the ability to filter by posts containing voice recordings in the search. Even searching mp3 did not take me straight to posts containing recordings. E.g. a filter to only return topics/posts that “include mp3 recordings”:

Also, just for giggles I recorded a 20 minute recording, then tried to upload it - but the upload failed because it was larger than the maximum size allowed. The recording was then lost, which in this case was no big deal… it was only a recording of me taking a nap, after all. :zzz: But if I had actually spent 20 minutes recording myself saying something important I would have been pretty sad to lose it! So ideally the plugin would stop the recording before the limit is reached, or at least provide a fallback method to save the recording to my device so I can upload it elsewhere and share the link as suggested by the error message.

Update: not sure this is a surprise but this plugin does not work on mobile, using chrome on ios. The record button just doesnt do anything.

Another update: occurs to me the record button could live in the composer options submenu. That would be better in my opinion.

5 лайков

Many thanks for all your feedback, we’ll try to implement some of your suggestions in the next update.

1 лайк

Awesome! I remain very interested in this plugin. Let me know when you need more testing or feedback. :rocket:

1 лайк

Would it possible to allow the recording to be saved somewhere else and then link to that in the plugin.

Example. Say the member had a soundcloud.com account and the recording was sent to soundcloud as a private or public recording.

7 лайков

Intressting project, I really like it.

How about background recording in cases, to allow parallel note taking? This would be my killer feature :wink: Do you know the iOS App Notability? This is currently my way to combine notes with recordings. It’s awesome, because Notability is able to highlight all changes made while the voice is keep talking… I guess this might be too much here? :stuck_out_tongue_winking_eye:

2 лайка

I’d also like to support Keith’s idea of saving the recording elsewhere with one addition. Instead of each member needing a soundcloud.com account, I’d like to be able to create an admin soundcloud account so that all recordings are saved to that account. Will simplify things immensely.

5 лайков

Update to this idea: I wonder if there’s a workflow that allows us to SpeakPipe instead! It’s a free voice recorder that generates a URL that can be added to your post. It also doesn’t require people to create an account. At minimum, people could click on the microphone icon and text pops up with a link to and directions on how to use SpeakPipe.

@csmu and @pawel, this may be another topic all together. Should I split this topic?

2 лайка

Is it free? If so then I think having it as an option would be excellent.

Could the recording be stored on Amazon S3?

1 лайк

The recorder feature is free for any individual to use. They have a more robust product that does cost money, take a look for yourself!

There doesn’t seem to be a workflow that makes it happen automatically, though the person who makes the recording can download it and store the file somewhere else.

3 лайка

Speakpipe does not seem to be “free as in freedom” like we get with discourse. My preference would be to avoid third party hosting of content, including these voice recordings.

You can set up your site to host all attachments on amazon s3 is that not a reasonable solution for those who may want to host longer recordings that take up more space?

3 лайка

Я так рад, что нашел этот плагин, но пока воздержусь от его установки, пока не появится возможность хостинга записей на сторонних сервисах. В идеале должны быть варианты подключения к Google Drive, Dropbox, Vocaroo или другим сторонним сайтам в дополнение к самостоятельному хостингу, но сторонний хостинг был бы особенно полезен для размещённых сообществ, у которых нет большого объёма дискового пространства. С нетерпением жду будущих обновлений этого приложения и благодарю Павела за его создание!

2 лайка

Привет, Джимми! Добро пожаловать. Я рад, что вы тоже заинтересованы в этом плагине. Выше есть обсуждение о хостинге сторонних сервисов, но я искренне не согласен с тем, что это является приоритетом или даже актуальным для данного конкретного плагина.

Может быть, если достаточно много людей этого захотят, вы сможете поработать над другим плагином для интеграции с Speakpipe или другим облачным сервисом обмена аудио?

Для этого плагина, на мой взгляд, приоритетом должно стать добавление настройки администратора для ограничения длительности записей. Таким образом, размер файла не будет чрезмерно обременительным для хранения или воспроизведения, а сайт не будет завален длинными, блуждающими записями, которые никто не слушает. :wink:

Тем временем уже существует возможность внешнего хостинга вложений (это встроено в Discourse — см. настройку администратора enable s3 uploads). Однако это действительно не подходит для потоковой передачи контента.

2 лайка

Мне интересно, почему?

1 лайк

Я видел здесь обсуждения ограничений на стриминг видео и другого контента, размещённого на Discourse, но сразу не могу их найти. :wink: Возможно, кто-то другой ответит, пока я поищу чуть глубже.

Мой собственный инстинкт подсказывает, что небольшие файлы не проблема, но когда речь заходит о часах кино, лучше перенести контент на облачный стриминг-сервис, например Vimeo или YouTube, а затем встраивать его в сообщениях Discourse, чтобы пользователи могли смотреть его, не покидая форум.

1 лайк

Разве этот плагин предназначен для записи голоса?

Моно-аудио в формате MP3 обычно занимает менее 10 МБ (10 минут моно-аудио с параметрами 44,1 кГц/16 бит/96 кбит/с составляют 7,2 МБ), поэтому оно будет чем-то вроде большого GIF-файла и, безусловно, может использоваться в сочетании с объектным хранилищем (S3) и CDN.

6 лайков

Ах, мы говорим об одном и том же. Извините за путаницу.

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

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

4 лайка

Как упомянул Тобиас здесь, у этого плагина есть ряд серьёзных проблем (в основном, проблемы с мобильными устройствами и отсутствие таймера или обратной связи во время сохранения записи).

Мне бы очень хотелось увидеть нативное альтернативное решение. Для меня самый простой способ позволить пользователям записывать и делиться аудио — использовать сервис вроде Clyp. В бесплатном плане он предоставляет 360 минут и даёт прямую ссылку, которую можно вставить в Discourse (благодаря магии OneBox).

https://clyp.it/ry03mt3o

Единственный недостаток — он не работает на iPad (можно только загрузить аудиофайл).

Другие варианты онлайн-записи, если кому-то они пригодятся:

  • Poodll — Недостаток: файлы хранятся только 30 дней.
  • VirtualSpeech: Онлайн-диктофон — Недостаток: не работает на iPad. На Android он выдаёт файлы .oga, которые не воспроизводятся автоматически в Discourse (хотя файлы .ogg воспроизводятся. Это может быть баг).
2 лайка