Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
151655 stories
·
33 followers

Breaking Financial Dependency and Rewriting Your Money Story (with Estelle Gibson)

1 Share

Send us Fan Mail

Financial dependency isn’t just about relationships — it’s about beliefs, environments, and emotional patterns. In Episode 30, Estelle Gibson explains how money mindset, trauma, and early childhood experiences shape our financial decisions and what it takes to build sustainable financial freedom. This conversation blends emotional healing with practical strategy in a way traditional financial advice rarely does. 

Connect with Estelle:
www.estellegibson.com
Check out the “Podcast” tab!
 
#GettingBlackWomenPaid #GBWPPodcast #FinancialDependency #MoneyMindset #FinancialFreedom #WealthBuilding #WomenAndMoney 

Did you know you can WATCH these episodes on YouTube? Check out the Getting Black Women Paid YouTube channel here.

Check out 'Tine's book here: Overcoming Imposter Syndrome at Work

Connect with 'Tine at tinezekis.com

Follow us on social media:

For more information about the podcast, visit our website: www.GettingBlackWomenPaid.com/podcast

Want to be a guest? Apply here!

Be sure to follow us wherever you're listening now. And don't forget to share this podcast with the incredible Black women in your life, so we can continue Getting Black Women Paid!






Download audio: https://www.buzzsprout.com/2349171/episodes/18793586-breaking-financial-dependency-and-rewriting-your-money-story-with-estelle-gibson.mp3
Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Building Real-Time Speech Translation with AI Avatars with Azure Speech Services

1 Share

Introduction

  Language barriers remain one of the biggest challenges in communication. Whether you are holding an all-hands meeting for a globally distributed team, consulting with non-native speaking patients, or teaching students across continents—seamless, real-time translation makes or breaks effective communication.Traditional translation tools feel impersonal and disconnected. Text captions scroll across screens while speakers continue in their native tongue, creating a disjointed experience. What if your audience could see and hear an AI avatar speaking directly to them in their own language, with natural lip-sync and human-like expressions?

  We can use Azure Speech Translation and Avatar to address this: a speaker talks in one language, and listeners watch an AI avatar deliver the translated speech in their chosen language. Imagine a CEO in Tokyo delivering a quarterly update. Employees in Munich, São Paulo, and Mumbai each see an AI avatar speaking to them in German, Portuguese, and Hindi respectively—all in real-time, with synchronized lip movements and natural speech patterns. The speaker focuses on their message; the technology handles the rest. 

In this blog, we will discuss a sample implementation that used Azure Speech, Translation and Avatar capabilities.

How It Works

📚 Ready to build your own real-time translation avatar application? Grab the complete source code and documentation from GitHub : github.com/l-sudarsan/avatar-translation

The application uses a session-based Speaker/Listener architecture to separate the presenter's control interface from the audience's viewing experience. The speaker can create and configure a session based on requirements

Speaker Mode

The speaker interface gives presenters full control over the translation session:

  • Session Management: Create sessions and generate shareable listener URLs
  • Language Configuration: Select source language (what you speak) and target language (what listeners hear)
  • Avatar Selection: Choose from prebuilt or custom avatars for the translation output
  • Real-time Feedback: View live transcription of your speech and monitor listener count
  • No Avatar Display: The interface intentionally hides the avatar video/audio to prevent microphone feedback loops
Listener Mode

The listener interface delivers an immersive, distraction-free viewing experience:

  • Easy Access: Join via a simple URL containing the session code (e.g., /listener/123456)
  • Avatar Video: Watch the AI avatar with synchronized lip movements matching the translated speech
  • Translated Audio: Hear the avatar speak the translation in the target language
  • Caption Display: Read real-time translation text alongside the avatar
  • Translation History: Scroll through all translations from the session

Data Flow & Solution Components

The diagram below shows data flow and how the components interact. The Flask server acts as the central hub, coordinating communication between the speaker's browser, Azure Speech Services, and multiple listener clients.

 

 


Implementation Deep Dive

You can check the complete source code in the GitHub repository.

Core Components

Five main technical components power the application, each handling a specific part of the translation pipeline.

1. Backend: Flask + Socket.IO

The server uses Flask and Flask-SocketIO with the Eventlet async worker for WebSocket support. This combination delivers:

  • HTTP endpoints for session management and avatar connection
  • WebSocket rooms for real-time translation broadcasting
  • Session storage for managing multiple concurrent translation sessions
# Session structure
sessions = {
    "123456": {
        "name": "Q1 Townhall",
        "source_language": "en-US",
        "target_language": "ja-JP",
        "avatar": "lisa",
        "listeners": set(),
        "is_translating": False
    }
}

2. Audio Streaming: Browser to Server

Instead of relying on server-side microphone access, the browser captures audio directly using the Web Audio API:

// Speaker captures microphone at 16kHz
const audioContext = new AudioContext({ sampleRate: 16000 });
const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });

// Process audio and send via Socket.IO
processor.onaudioprocess = (event) => {
    const pcmData = convertToPCM16(event.inputBuffer);
    socket.emit('audioData', { sessionId, audioData: pcmData });
};

This approach works seamlessly across different deployment environments without requiring server microphone permissions.

3. Azure Speech Translation

The server receives audio chunks and feeds them to Azure's TranslationRecognizer via a PushAudioInputStream:

# Configure translation
translation_config = speechsdk.translation.SpeechTranslationConfig(
    subscription=SPEECH_KEY,
    region=SPEECH_REGION
)
translation_config.speech_recognition_language = "en-US"
translation_config.add_target_language("ja")

# Push audio stream
push_stream = speechsdk.audio.PushAudioInputStream()
audio_config = speechsdk.audio.AudioConfig(stream=push_stream)

# Handle recognition results
def on_recognized(evt):
    translation = evt.result.translations["ja"]
    socketio.emit('translationResult', {
        'original': evt.result.text,
        'translated': translation
    }, room=session_id)

4. Avatar Synthesis with WebRTC

Each listener establishes a WebRTC connection to Azure's Avatar Service:

  1. ICE Token Exchange: Server provides TURN server credentials
  2. SDP Negotiation: Browser and Azure exchange session descriptions
  3. Avatar Connection: Listener sends local SDP offer, receives remote answer
  4. Video Stream: Avatar video flows directly to listener via WebRTC
// Listener connects to avatar
const peerConnection = new RTCPeerConnection(iceConfig);
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);

// Send to Azure Avatar Service
const response = await fetch('/api/connectListenerAvatar', {
    method: 'POST',
    headers: { 'session-id': sessionId },
    body: JSON.stringify({ sdp: offer.sdp })
});

const { sdp: remoteSdp } = await response.json();
await peerConnection.setRemoteDescription({ type: 'answer', sdp: remoteSdp });

5. Real-Time Broadcasting

When the speaker talks, translations flow to all listeners simultaneously:

Each listener maintains their own WebRTC connection to the Avatar Service, ensuring independent video streams while receiving synchronized translation text.

WebRTC Avatar Connection Flow

The avatar video streaming uses WebRTC for low-latency delivery. Each listener establishes their own peer connection to Azure's Avatar Service through a multi-step handshake process.

 

 

 Key Design Decisions

  • Browser audio capture: Works in any environment without requiring server microphone permissions
  • Session-based rooms: Isolates translation streams and supports multiple concurrent sessions
  • Separate speaker/listener UIs: Prevents audio feedback and optimizes each user's experience
  • Socket.IO for broadcasts: Delivers reliable real-time messaging with automatic reconnection
  • WebRTC for avatar: Provides low-latency video streaming with peer-to-peer efficiency

 

 


Application Areas

Real-time speech translation with AI avatars unlocks transformative possibilities across industries. Here are key sectors where this technology drives significant impact.

🏢 Enterprise & Corporate

Internal Townhalls & All-Hands Meetings

Global organizations deliver executive communications where every employee hears the message in their native language—not through subtitles, but through an avatar speaking directly to them.

Sales Conversations

Sales teams engage international prospects without language barriers. The avatar builds a more personal connection than text translation while preserving the original speaker's authenticity.

Training & Onboarding

Standardized training content reaches employees worldwide, with each viewer experiencing the material in their preferred language through an engaging avatar presenter.

🏥 Healthcare

Patient Communication

Healthcare providers consult with patients who speak different languages, while the avatar delivers medical information clearly and accurately in the patient's native tongue.

Telehealth

Remote healthcare consultations reach non-native speakers effectively, improving health outcomes by ensuring patients fully understand their care instructions.

🎓 Education

Online Learning

Educational institutions expand their global reach, offering lectures and courses in multiple languages through avatar presenters.

Interactive Lessons

Engaging avatar presenters captivate students while delivering content in their native language.

Museum Tours

Cultural institutions offer multilingual guided experiences where visitors receive personalized tours in their language of choice.

📺 Media & Entertainment

Broadcasting

News organizations and content creators deliver content to international audiences with localized avatar presenters, keeping viewers engaged while breaking language barriers.

 

Live Events

Conferences, product launches, and presentations reach global audiences with real-time translated avatar streams for each language group.


Custom Avatars: Your Brand, Your Voice

While prebuilt avatars work great for many scenarios, organizations can build custom avatars that represent their brand identity. This section covers the creation process and important ethical considerations.

The Process

  1. Request Access: Submit Microsoft's intake form for custom avatar approval
  2. Record Training Data: Capture at least 10 minutes of video featuring your avatar talent
  3. Obtain Consent: Record the talent acknowledging use of their likeness
  4. Train the Model: Use Microsoft Foundry Portal to train your custom avatar
  5. Deploy: Deploy the trained model to your Azure Speech resource

Responsible AI Considerations

Building synthetic representations of people carries ethical responsibilities:

  • Explicit Written Consent: Always get permission from the talent
  • Informed Consent: Make sure talent understands how the technology works
  • Usage Transparency: Share intended use cases with the talent
  • Prohibited Uses: Never use for deception, misinformation, or impersonation

Microsoft publishes comprehensive Responsible AI guidelines that you must follow when creating custom avatars.


Getting Started

Ready to build your own real-time translation avatar application? Grab the complete source code and documentation from GitHub.

📚 Full Documentation: github.com/l-sudarsan/avatar-translation/docs

Prerequisites

  • Python 3.8+
  • Azure Speech Service subscription
  • Modern browser (Chrome, Edge, Firefox)

Quick Start

# Clone the repository
git clone https://github.com/l-sudarsan/avatar-translation.git
cd avatar-translation

# 1. Create and activate virtual environment
python -m venv venv
.\venv\Scripts\Activate

# 2. Install dependencies
pip install -r requirements.txt

# 3. Configure Azure credentials
cp .env.example .env
# Edit .env with your SPEECH_REGION and SPEECH_KEY

# 4. Run the application
python -m flask run --host=0.0.0.0 --port=5000

Demo Sequence

  1. Open http://localhost:5000/speaker
  2. Configure session (name, source language, target language, avatar)
  3. Click Create Session → Copy the listener URL
  4. Open the listener URL in another browser/device
  5. Wait for the avatar to connect (video appears)
  6. Start speaking → Listeners see the avatar + translations

Tip: For the best demo experience, open the listener URL on a separate device to avoid audio feedback from the avatar's output being picked up by the speaker's microphone.


Conclusion

Real-time speech translation with AI avatars marks a significant leap forward in cross-language communication. By combining Azure's powerful Speech Translation, Text-to-Speech, and Avatar Synthesis services, you can build experiences that feel personal and engaging—not just functional.

The future of multilingual communication isn't about reading subtitles. It's about having someone speak directly to you in your language.


Resources

Project Repository

Azure Documentation

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

W3C Web of Things (WoT) support in Azure IoT Operations

1 Share

Integration challenges often pose a barrier to the ability to scale industrial solutions. When new or updated assets show up having a new protocol, a slightly different telemetry shape, or an undocumented interface, teams end up rewriting glue code and retesting end-to-end pipelines. Azure IoT Operations reduces that friction by providing a unified data plane at the edge: modular services running on Azure Arc-enabled Kubernetes, with an edge-native MQTT broker as the backbone for reliable, event-driven architectures.

Key concepts 

Azure IoT Operations is Microsoft’s edge platform for running IoT services on Kubernetes via Azure Arc. MQTT is the pub/sub messaging protocol Azure IoT Operations uses for event-driven data movement. OPC UA is a common industrial connectivity standard that can expose rich information models, but many assets don’t implement it directly. W3C Web of Things (WoT) standardizes machine-readable descriptions of an asset’s interface via a “Thing Model.”

We’re announcing a key step toward open, model-driven interoperability in Azure IoT Operations: W3C Web of Things (WoT) is now a first-class modeling input for developer workflows, backed by the Azure IoT Operations SDKs and the code generation (codegen) v2 toolchain.

Why WoT in Azure IoT Operations?

Azure IoT Operations already emphasizes open standards such as MQTT and OPC UA to foster interoperability across OT and IT systems while staying Kubernetes-native and scalable. In practice, though, many assets cannot natively present an OPC UA information model and integration documentation still often arrives as a static PDF.

To scale deployments, teams need a machine-readable asset description they can use for automated onboarding and repeatable pipelines. WoT enables that path for non-OPC UA assets: instead of relying on a PDF, vendors (or integrators) can provide a WoT Thing Model that describes the asset’s telemetry, commands, and properties so onboarding and integration can be automated.

What’s included

The Azure IoT Operations SDKs are a set of tools and libraries (across multiple languages) for building and extending solutions. Within that toolbox, the Protocol Compiler is the centerpiece: it takes an interface model as input and generates client and server code so you can focus on business logic instead of message plumbing. With WoT support, you can use a WoT Thing Model as that input to generate code stubs for telemetry and for mRPC (message-based remote procedure calls used for service-to-service interactions in Azure IoT Operations).

If you’re coming from the DTDL (Digital Twins Definition Language) world, the workflow will feel familiar: the Protocol Compiler takes a model as input and outputs generated client/server libraries in your target language.

When an asset interface and data model are expressed as a WoT Thing Model, you can treat that model as the contract. Generated code then enforces the expected payload shapes for telemetry and mRPC interactions, reducing bespoke glue code and lowering the risk of mismatched or undocumented data.

Eclipse ediTDor as a practical editor for WoT Thing Models

A model-first workflow only works if authoring is approachable. Eclipse ediTDor is an open-source, web-based editor that helps you create and validate W3C WoT Thing Models, including export to JSON-LD (a standard JSON format for linked data). It is hosted by the Eclipse Foundation, and you can try it here: Eclipse ediTDor.

WoT as the asset description that unlocks automation

Putting it all together, a typical workflow looks like this:

  1. Start with a WoT Thing Model for the asset (from the vendor, a partner, or authored in-house).
  2. Open the model in Eclipse ediTDor to review, validate, and refine it.
  3. Use the Protocol Compiler (codegen v2) to generate client/server code stubs for telemetry and mRPC interactions.
  4. Deploy your application into an Azure IoT Operations environment running on Azure Arc-enabled Kubernetes and integrate with data services via the built-in MQTT broker.

Getting Started

If you want to explore this further, here are the key starting points:

Conclusion

With WoT support in Azure IoT Operations, we continue our commitment of building an open, standardized ecosystem where machine-readable asset descriptions are a first-class input to onboarding and development. Combined with the Protocol Compiler and practical authoring options like Eclipse ediTDor, it becomes feasible to go from an asset description to running code with significantly less integration friction.

Read the whole story
alvinashcraft
27 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Apply sensitivity labels with custom permissions in Office for the web

1 Share

We’re excited to announce that support for applying sensitivity labels with user-defined permissions is now rolling out in Word, Excel, and PowerPoint for the web.

In the past, users were limited to opening and editing files with existing custom permissions in the web apps; applying new sensitivity labels configured for user-defined permissions or modifying permissions always required switching to the desktop versions. Now, all these actions – applying labels and managing permissions for specific users or domains – can be completed entirely within Word, Excel, or PowerPoint on the web. 

How the Permissions dialog works in Office for the web 

When a user applies a sensitivity label that is configured for user-defined permissions in Word, Excel, or PowerPoint on the web, the Permissions dialog opens to let them choose who can access the file and what each person or domain is allowed to do. This is the same modernized experience that previously shipped in the Windows apps, now available in the browser. 

  1. Apply a label configured for user-defined permissions. From the Sensitivity menu in the toolbar, the file name flyout, or other entry points your organization uses, the user selects a label that their tenant admin has configured in the Purview portal with the option to let users assign permissions.
  2. Specify users and domains. In the Permissions dialog, the user adds individual people (for example, someone@example.com) or whole domains (for example, example.com) who should have access to the file. 
  3. Choose permission levels. For each person or domain, the user chooses from clear permission levels such as ViewerEditor, or Owner, which correspond to underlying Rights Management usage rights. 
  4. Use advanced options when needed. The user can expand additional settings to configure options such as a contact email for access requests. Note that web apps do not currently support setting a custom expiration date for permissions. 
  5. Apply and update permissions. After saving, the selected sensitivity label is applied to the file with the specified permissions. Users with appropriate rights can reopen the Permissions dialog later from the web apps to add or remove people or domains, or adjust permission levels, without switching to the desktop client.

The Permissions dialog in Office for the web is designed to be consistent with the experience in the Windows apps, so users see the same permission levels and terminology wherever they work. All enforcement continues to respect your organization’s existing sensitivity label policies, encryption configurations, and Rights Management Service (RMS) settings.

What this means for admins 

This feature enables organizations using sensitivity labels configured in the Microsoft Purview portal with encryption and user-defined permissions to apply these labels and manage permissions directly in the web versions of Word, Excel, and PowerPoint. Users can now stay within the browser to classify and protect content, eliminating the need to switch to desktop apps for applying or updating labels and permissions. 

As support for applying these labels becomes available in Office for the web, consider reviewing your existing sensitivity labels that are configured for user-defined permissions. You may want to update internal guidance and training materials to reflect that users can now complete these workflows entirely in the browser and ensure that security operations and compliance teams are prepared to monitor usage through existing Purview auditing and reporting capabilities. 

Admin considerations and scenarios 

Many organizations use user-defined permissions for scenarios where central policies cannot realistically predefine every individual who should have access to a file. For example, you might publish labels that require users to specify recipients for documents that contain deal-specific financials, M&A data, or sensitive HR information. In these cases, granting permissions at the time of labeling helps reduce oversharing and keeps access tightly scoped to the people who genuinely need it. 

Licensing and configuration requirements 

To use sensitivity labels with user-defined permissions in Office for the web, your organization must have licensing that supports configuring Purview sensitivity labels, have sensitivity labeling enabled for files stored in SharePoint and OneDrive, and have configured at least one sensitivity label for user-defined permissions. 

The licensing requirements for applying sensitivity labels with user-defined permissions in the Office web apps is that same as for using sensitivity labels that apply encryption in the Office desktop apps. For more information on licensing requirements, see Microsoft 365 licensing guidance for security & compliance. 

See Enable sensitivity labels for files in SharePoint and OneDrive for more information about enabling application of sensitivity labels to files stored in the cloud. 

Read the whole story
alvinashcraft
37 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Get ready for Google I/O: Livestream schedule revealed

1 Share
Google I/O returns May 19–20 to showcase major updates in AI, Android, Chrome, and Cloud, beginning with a keynote on the "agentic era" of development. The event will focus on new tools designed to automate complex workflows and simplify the creation of high-quality, AI-ready applications. Attendees can register to access live sessions, technical demos, and professional development resources both live and on-demand.
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

TXTextControl.Markdown.Core 34.1.0-beta: Work with Full Documents, Selection, and SubTextParts

1 Share
In this article, we will explore the new features and improvements in TXTextControl.Markdown.Core 34.1.0-beta, including working with full documents, selection, and SubTextParts. We will also provide code examples and best practices for using these features effectively.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories