ten / playground /src /components /Agent /AudioVisualizer.tsx
3v324v23's picture
Зафиксирована рабочая версия TEN-Agent для HuggingFace Space
87337b1
export interface AudioVisualizerProps {
type: "agent" | "user"
frequencies: Float32Array[]
gap: number
barWidth: number
minBarHeight: number
maxBarHeight: number
borderRadius: number
}
export default function AudioVisualizer(props: AudioVisualizerProps) {
const {
frequencies,
gap,
barWidth,
minBarHeight,
maxBarHeight,
borderRadius,
type,
} = props
const summedFrequencies = frequencies.map((bandFrequencies) => {
const sum = bandFrequencies.reduce((a, b) => a + b, 0)
if (sum <= 0) {
return 0
}
return Math.sqrt(sum / bandFrequencies.length)
})
return (
<div
className={`flex items-center justify-center`}
style={{ gap: `${gap}px` }}
>
{summedFrequencies.map((frequency, index) => {
const style = {
height:
minBarHeight + frequency * (maxBarHeight - minBarHeight) + "px",
borderRadius: borderRadius + "px",
width: barWidth + "px",
transition:
"background-color 0.35s ease-out, transform 0.25s ease-out",
// transform: transform,
backgroundColor: type === "agent" ? "#0888FF" : "#EAECF0",
boxShadow: type === "agent" ? "0 0 10px #EAECF0" : "none",
}
return <span key={index} style={style} />
})}
</div>
)
}