top of page
A Young man wearing headphones

TECNOLOGIAS

A Plataforma do SoundCloud é essencialmente um serviço web, sendo que a sua arquitetura irá ser semelhante à de muitos dos serviços web de hoje em dia. Nesta secção irá ser feita uma introdução resumida à arquitetura ao serviço do SoundCloud, focando-se em seguida nas tecnologias de multimédia utilizadas pela aplicação, nomeadamente a transmissão de imagem e áudio.

Tecnologias: Sobre nós

Arquitetura Geral

A arquitetura geral do SoundCloud é baseada em Value Added Services (VAS). Um VAS é um termo utilizado em serviços de telecomunicação para serviços não essenciais, ou seja, todos os serviços que são complementares ao serviço principal oferecido. A maior parte dos ecossistemas web atuais são maioritariamente constituídos de VAS, visto que estas traduzem produtos mais ricos e apelativos para os utilizadores.
Além da camada de VAS, existem também uma camada Edge que fornece as APIs publicas que fazem a interface entre os clientes e as VAS.  Para completar, camada da Foundation que é a de baixo nível, tem a lógica dos serviços, que constituem os elementos relativos ao domínio envolvente [11]. As VAS são quem vão processar toda informação gerada pelos serviços e processos da Foundation e agrupá-la de forma a construir experiências mais enriquecedoras para os utilizadores.

Arquitetura Geral_edited_edited_edited_edited.png
Tecnologias: Imagem

CODIFICAÇÃO DE ÁUDIO

A young woman talking on the radio

A codificação de áudio do SoundCloud pode ser dividida em duas partes: o upload e o stream. Estas partes são diferentes pelos requisitos de qualidade e consequentemente o tipo de codecs utilizados para a sua codificação. Na parte do upload os utilizadores são aconselhados a faze-lo em formatos lossless (nenhuma informação é perdida na codificação) como: WAV, FLAC, AIFF, ou ALAC. No entanto o suporte de upload em formatos lossy também é suportado, nomeadamente: OGG, MP2, MP3, AAC, AMR e WMA [12].
A diferença entre estes formatos irá determinar a qualidade do áudio que é posteriormente utilizado para streaming. Ao utilizar um formato lossy estamos a perder informação sobre o áudio utilizado e a qualidade do ficheiro é deteriorada.  Para streaming os formatos suportados são Opus  (versão gratuita) e AAC (versão premium) – para uploads lossless.
Quando o upload é feito num formato lossless, não se perde informação nenhuma do ficheiro áudio, apenas se exploram as propriedades entrópicas do ficheiro de forma a aumentar a compressão do áudio, sendo assim depois possível fazer o seu streaming com maior qualidade.  
A codificação entrópica consiste em explorar as probabilidades associadas ao acontecimento de cada sequência de bits (ou símbolos), alcançando assim taxas de compressão mais altas. Exemplificando, se considerarmos uma sequência de bits 110 110 111 100 o codificador entrópico iria associar à sequência 110 ao valor 0 (visto ser a mais provável só queremos gastar um bit), à sequência 111 o valor 10 e à sequência 110 o valor 11. Assim o conjunto total de bits codificados seria 0 0 10 11, obtendo-se um fator de compressão de 50% (excluindo a metadata associada às tabelas de símbolos – normalmente é pré-definida). Para streams com um número mais elevado de bits os fatores de compressão são igualmente mais elevados.
As codificações lossless baseiam-se resumidamente em amostragem e codificação entrópica. A amostragem é geralmente por Pulse-Code Modulation (PCM).
Este tipo de amostragem consiste em a um certo intervalo de tempo, determinado pela frequência de amostragem, se retirar o valor atual da amplitude do sinal, registando o resultado.

primeira.png

Os bits por amostra determinam os níveis de quantização utilizados no sinal. No exemplo, com 4 bits, apenas podemos quantizar o sinal de 0-16 valores. Como consequência nos picos do sinal, as 3 amostras centrais retêm o mesmo valor apesar de no sinal terem valores diferentes. O número de bits por sinal influência a resolução do sinal resultante, no entanto, a frequência de amostragem é o fator mais determinante da qualidade do áudio amostrado. De acordo com o teorema de Nyquist é necessário amostrar um sinal no mínimo com o dobro da frequência máxima do sinal de forma ao sinal conseguir ser recuperado integralmente.

              

Após a quantização o sinal é filtrado e segmentado por frequências, normalmente utilizando uma MDCT (Modified Discrete Cosine Transform).  Esta segmentação consiste em expressar o sinal original como uma soma de cossenos a oscilar a frequências diferentes. Assim cada coeficiente regista a intensidade do sinal nessa frequência. Na Figura seguinte é possível observar um sinal original e a respetiva transformada DCT

segunda.png

No entanto, sabemos que o ser humano tem sensibilidades diferentes relativamente às diferentes gamas de frequências, tanto no domínio do áudio como da visão. Por exemplo, no caso do áudio a sensibilidade humana têm uma característica. Esta característica é denominada de modelo Psicoacústico e encontra-se representada na figura abaixo. Este modelo define a sensibilidade do ouvido humano às várias frequências com as respetivas intensidades. Assim, qualquer frequência que não tenha uma intensidade acima do limiar definido pode ser descartada. Estas propriedades do sistema auditivo humano permitem diminuir a quantidade de informação que é necessário transmitir, sendo que quanto melhor se conseguir caracterizá-las mais simples é de se obter uma melhor relação bitrate/qualidade.

terceira.png

Além do simples limiar simples (assumindo a situação de silêncio – nenhum outro som está a ser processado), existe um fenómeno de mascaramento que acontece quando um som com intensidade mais alta é recebido. Este som vai mascarar sons vizinhos na frequência que tenham intensidades inferiores, fazendo-os impercetíveis aos ouvidos humanos. Semelhante à abordagem anterior, se a informação não é processada pelos ouvidos humano então não existe necessidade de a processar. Isto implica que além de dividir o áudio por frequências e filtrar, também é necessário procurar por frequências com altas intensidades para eliminar as vizinhas, mais fracas, diminuindo assim a bitrate do sinal enviado.


Esta componente de segmentação e filtração na frequência é a componente que representa perdas num codec lossy. Além disso, devido à mudança do sinal do domínio do tempo para a frequência existem agora dois fenómenos indesejáveis que acontecem no sinal. O primeiro é o eco do sinal, que acontece geralmente em janelas temporais transientes (intervalo de tempo em que é feita cada segmento de amostragem) em que existe um período de silencio seguido de um sinal abrupto com grande intensidade dando assim origem ao pré-eco. Na figura posterior este efeito é ilustrado em dois sinais. Pode-se ver que nos sinais descodificados o sinal seguinte é replicado com menos intensidade o que é bastante indesejável para a codificação do áudio. De forma a tentar evitar o problema podem-se definir janelas temporais mais pequenas, no entanto esta decisão implica menos eficiência em termos de bitrate – como o tempo da janela é reduzido, existe menos redundância temporal para ser explorada pelos codificadores entrópicos. Consequentemente, os codecs mais recentes utilizam janelas dinâmicas para resolver o problema. O uso desta técnica consiste em identificar as janelas temporais com características propícias a efeitos de pré-eco e em seguida dividi-las ao meio.

quarta.png

Outro problema relativo ao uso de transformadas na frequência é o efeito de bloco. O efeito de bloco acontece quando se juntam dois blocos que foram processados independentemente um do outro. Como durante o processo de transformação do sinal da frequência ocorrem perdas, os blocos são efetivamente diferentes após a codificação. Assim, quando se juntam os dois blocos, originam-se incongruências na zona de união. Estas incongruência no sinal são incómodas e indesejáveis, sendo assim necessário resolve-las utilizando sobreposição de janelas temporais. Assim, cada janela temporal enviada é construída a partir de da transformada de uma janela temporal com maior duração de forma a assegurar compatibilidade com as janelas vizinhas.
Os codecs utilizados para codificação no SoundCloud têm propriedades semelhantes às generalizadamente descritas nesta secção. No caso do Waveform Audio File Format (WAV), este apenas representa um formato utilizado para guardar bitstreams em forma de chunks, atuando como um wrapper para vários tipos de compressão de áudio, apesar de no caso geral apenas conter amostra PCM. A maioria dos formatos suportados para upload sendo lossless, não divergem muito entre eles.  O mesmo não acontece na parte do streaming existindo os dois formatos: Opus 64 kb e AAC 256 kb.  
Opus é um tipo de codificação lossy projetado para comunicações interativas em tempo real (atrasos reduzidos) e para processadores mais simples (complexidade reduzida) . O Opus pode opera em dois modos diferentes:  
SILK (maioritariamente para voz) e CELT (música e voz com alta qualidade) ou hibrido (SILK e CELT simultaneamente).  Em comparação com outros standards de codificação o Opus oferece uma melhor relação entre bitrate e qualidade aparente .   Além disso o Opus é um padrão tanto open-source como royalty free, tornando-o bastante apelativo para várias aplicações.
Já em relação ao Advanced Audio Coding (AAC), este contem uma qualidade aparente bastante superior, devido à bitrate mais elevada., não deixando, no entanto, de ser lossy. O AAC foi o standard que sucedeu o MP3, que não tendo as restrições de retrocompatibilidade consegue ser mais eficiente que o MP3. Além disso suporta até 48 canais, com bitrates e tamanhos de janela variáveis, otimizados para janelas estacionárias e janelas transientes.

Tecnologias: Notícias
bottom of page