
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.
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.

CODIFICAÇÃO DE ÁUDIO

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.

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

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.

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.
