I joined Cartesia as their founding designer — directing, building, and growing the self-serve product from zero to one.

Designing Cartesia’s flagship text-to-speech playground

Cartesia's text-to-speech playground is largely our users' first impression of our technology. It was important for the experience to be charming, seamless, and memorably capable. It was also an interface that needed to flex to tailor to a variety of audiences, from CEOs to indie developers to non-technical members exploring voice solutions for their team.

It was the exact moment to convince users "Cartesia is for me".

Pain points

There were 3 main pain points I wanted to address through a redesign.

1. Voice selection required 2-3 clicks, adding friction to one of the most fun and engaging aspects to a text-to-speech generation.

This came from a key insight that with a text-to-speech model, it was equally about selling a model as it was about selling a voice. The result of a model is precisely dependent on the voice. The worldview around models is in a way agnostic, customers don’t buy a model without a voice that works for them first.

Previously, we reserved the functionality of voice search and discovery to the Voice Library feature. However, user testing validated this insight: the text-to-speech playground feature is used to test the models, just as much as it is to test and discover voices.

Users changed out voices more often than they edited the transcript, as they were more likely to come to the playground already knowing what they wanted to transcribe. This was true amongst hobbyists, as well as companies with a use case transcript they were already testing and comparing against other model providers.

2. The history section scrolled infinitely, resulting in confusing moments where the text-to-speech module was not available on the page.

In addition to increasing cognitive load by requesting users to "switch" between either a text-to-speech or history view, this design also didn't consider how users used the history feature. Historical generations were often used to compare the same transcript with changes to voices or configurations, and then brought back into the text-to-speech generation space to re-generate with a new setting. The infinite scroll made it difficult to retain a "sense of place" between the history and active generation. How might different a different interface pattern improve the design of the history feature so that both the primary text-to-speech generation space and history was persistently accessible?

3. I received internal feedback that the configurations "felt like they were floating". The configurations inside a card didn't visually align with the rest of the platform. Additionally, the organization and grouping of configurations didn't align with intended hierarchy and the user journey of selecting/editing them.

Approach

I designed a new text-to-speech page addressing these pain points.

This approach was driven by a new visual hierarchy that aligned with the insight that voice selection was key to model adoption. Additionally, remaining configurations rarely customized. For example, even though the model selection was vital to the output, it was rarely switched to anything other than the most recent model.

This feature also hones a visual refresh, shipped alongside a larger design systems initiative.

This design was also successful in regrouping features in a modular way. For example, configurations now lived in a scalable panel, adaptable to any new configuration types our research team may introduce in the future.

The hierarchy also afforded a creative mobile adaptation, reflecting the user flow of voice selection and transcript being primary, with remaining configurations secondary.

Voices: A core product offering

You can’t separate a text-to-speech model from its voices. The voice library helps you quickly find the voice you need through a seamless filtering and sorting experience.

Problem

Initially, the ask was for a visual refresh of the voice library. My team was frustrated with the limited number of voices accessible on the screen at a time.

I began by trying to understand what led to the initial design decisions.

The minimum height to each voice card was limited by that there were three rows of content. But why were the name, tags, and description in separate rows? Why were filters put into a panel, limiting the view of the voices? This was both to accommodate the large selection of style tags, and the possibility that up to all of them could apply to a voice at a time.

Upon auditing the voices myself, I found that there were no voices with more than three tags. Additionally, some styles had only one voice assigned under them. This was also problem on its own: it was a poor impression of our voices offerings if only one voice shows at a time, as the fact that we offered thousands of voices was a key product differentiator.

This then led to my most impactful question: what and who decided the system for the data behind voices?

Service design: building the team and systems to sustain Voices surfaces

I recognised that the greatest impact to an improved voice library started with the voice data. Therefore, I first set up a data operations initiative to create a new system for organising and creating voice data.

We decided on a maximum character count for names and descriptions. To support scan-ability, we also created a new description for a “role”, which was an adjective followed by a noun specifically describing that voice. This aligns with how humans search for voices — I may know that I want a “patient” voice for my customer support use case, and seeing a role such as “Kind Teacher” may actually fit better or be more informative than “Customer Support Agent”.

Descriptions were also systematised to start with a descriptive adjective, followed by age, and then a special use case.

This template for descriptions allowed you to vertically scan down adjectives until one caught your eye, which you could then continue to read.

This also took place of the potentially infinite list of style tags.

Lastly, we also worked together to create custom preview transcripts for each voice. Previously, they all recited “Nice to meet you! Hope you’re having a great day.” Now, the transcripts highlight characteristics of the voice.

Bringing it together with visual hierarchy

Searching

The design for searching was determined by the most probable and meaningful user journey. A search bar takes visual priority to help users who already know what they’re looking for quickly find a voice. Filters help users discover voices. They also inspire; the use cases dropdown can inspire a new perspective of thinking about voices, and the languages dropdown can reveal the plethora of accent options accompanying the dozens of voices.

Tabs are tertiary, as they are least likely to require being switched. They are useful for recurring users who have already invested in organising voices for themselves.

Previewing

Previewing a voice with a custom transcript is essential to forming confidence in it.

This redesign introduced a new feature where users can choose to preview a voice with the default, a variety of transcripts, or a custom transcript.

The preview feature is also thought of as a “filter”, used as another layer of intention.

I also introduced a new feature where you can call a voice to preview it, to hear how it sounds as a voice agent.

Design system

Cartesia’s prior brand design was pulled together a few different prior brand initiatives into one. It was fast and scrappy; we were fast and scrappy.

Without a single outlined identity, there were inconsistencies between different surfaces, such as marketing and product.

Before and After

Most importantly, the old brand didn’t tell a story. There was no clear motivation in the creative direction, making it difficult to meaningfully extend.

Therefore, we invested in a rebrand to debut a more matured and focused identity and stance in the frontier research and product space.

This visual rebrand simultaneously posed opportunities to:

1.Align on our company mission and values
2.Establish a new design system, and mature the design function and cross-functional collaboration processes with designers

Brand conviction: The new brand we landed on was more humanist, academic, and playful — representing our company’s history, mission, and values.

Brand book

At the core of the rebrand was the introduction of a new little guy, Archie. He takes form of the personification of an asterisk, a symbol that says “there’s more here, dig deeper”. He embodies an invitation to be curious, that there is something worth knowing living beneath the surface.

Introducing Archie. Be nice to him.

What’s most unique about Archie is his sense of play and mischief. This opened many creative doors to extend into the product design.

Deconstructing

I began by deconstructing the brand into language — providing metaphors that can be tastefully applied to the interface design through color, form, and motion. This language represents the story users should feel when using our product.

The Cartesia playground’s job is to serve a highly identifiable, memorable, and technically capable first impression of our technology.

Reconstructing: From brand guidelines to design system

This story was reconstructed into a grounded and precise design system.

Colors: A palette was pulled from elements of the natural world — lush greens, sky blues, sands, and earth. It represents finding a reliable source of confidence from working on the fundamentals.

Colors are implemented in a 3-tier system, allowing more flexibility and coordination cross-functionally between product and marketing, and digital and print.

Brand

Used for buttons, accents, and pop of brand

Memory

#99B0C8

oklch(0.7477 0.0431 249.52)

Mist

#D1E2E8

oklch(0.9019 0.02 220.88)

primary-alt

Verdant

#309D4B

oklch(0.6157 0.1545 147.96)

brand

Growth

#DBE5D0

oklch(0.9086 0.03 127.9)

brand-accent

Growth-150

#CBD6C1

oklch(0.8619 0.0308 129.78)

primary

Forest

#004E23

oklch(0.371 0.0989 151.4)

primary-accent

Forest-50

#255F38

oklch(0.436 0.0884 151.71)

Border

Used for borders, separators, and nibs

border

Bone-200

#DFDCD7

oklch(0.8954 0.0075 80.72)

border-light

Bone-100

#FDFDFC

oklch(0.938 0.0035 67.78)

border-flourish

Bone-300

#CDC8C1

oklch(0.8348 0.0111 76.59)

Surfaces

Used for fills

popover

card

Canvas-100

#FDFDFC

oklch(0.9938 0.0013 106.42)

primary-foreground

background-content

Canvas-50

#FEFEFE

oklch(0.997 0 0)

background

secondary

Canvas-150

#F9F9F8

oklch(0.9818 0.0013 106.42)

muted-1

Canvas-200

#F5F5F2

oklch(0.9693 0.004 106.47)

accent

Canvas-300

#F3F2EF

oklch(0.9611 0.0041 91.45)

muted-2

Canvas-400

#F1F0EC

oklch(0.9548 0.0054 95.1)

muted-3

Canvas-500

#EDEDE8

oklch(0.9447 0.0067 106.53)

sidebar

Sand-200

#F0EFE9

oklch(0.9512 0.008 98.88)

sidebar-accent

Sand-300

#EAE9E2

oklch(0.9329 0.0094 99.99)

muted-4

sidebar-primary

Sand-400

#E4E3DB

oklch(0.9144 0.0108 100.83)

Foreground

Used for text and icons

foreground-primary

Carbon-900

#1E1C1A

oklch(0.2279 0.0049 67.58)

accent-foreground

sidebar-accent-foreground

Carbon-700

#39342F

oklch(0.3285 0.0112 67.42)

sidebar-primary-foreground

brand-accent-foreground

secondary-accent-foreground

Carbon-500

#525150

oklch(0.4355 0.0021 67.77)

foreground-secondary

Carbon-400

#636260

oklch(0.4964 0.0034 84.57)

sidebar-foreground

secondary-foreground

brand-foreground

Carbon-300

#696969

oklch(0.5208 0 0)

foreground-tertiary

Carbon-100

#A7A6A2

oklch(0.7248 0.0058 95.13)

The palette is sorted into Brand, Border, Surfaces, and Foreground, which offers suggestions when in search for colors. You’ll notice that some colors (Memory and Mist) aren’t assigned any component token because, while part of the brand identity, they haven’t found a place in the product [yet!]. Other colors have multiple component tokens — breaking out of the “category” they are in — which proves the merit of using a multi-tiered system!

Component tokens are named semantically, by their role followed by their relationship to the component. When a token represents a component’s primary role, the role comes first. For example, secondary defines the background of a secondary color, and pairs with secondary-foreground which defines the icon/text color in that button. When a token describes a property applied within a broader context, the property comes first. For example, foreground-secondary is used for as a “secondary” foreground across background surfaces.

0:04 / 0:11

Player component using brand, brand-accent, brand-foreground, and brand-accent-foreground

Form and Motion

Iconography was an opportunity for unobtrusive delight, bringing playfulness while maintaining craft. We wanted to use forms that evoked resemblance to science/spacecraft/boardgames/riddles. Geek is so back.

speed

-2

Dashboard

Announcement

Deployed

Status

Try playing around :-)

Using the guidance on textures from the brand book, I designed a generative system for profiles for voices.

Meet

Skylar

Adding a final identifiable touch, I designed a system of borders and nibs inspired by webs and veins. Reserved to emphasise magical moments, such as a text-to-speech generation.

Technology that feels alive, like blood pulsing through veins.

By establishing a design system from the new brand, we achieved a cohesive look and feel cross-functionally. The initiative for a design system naturally funded refreshing our interface designs as well — providing opportunities to combat known UX pain points from a systematic lens.

Bloopers